Prechádzať zdrojové kódy

修改车队状态跟踪按钮显示类型,修改状态跟踪可维护费用信息

阿伏兔 4 rokov pred
rodič
commit
99582969d7
19 zmenil súbory, kde vykonal 446 pridanie a 123 odobranie
  1. 1 1
      ruoyi-admin/src/main/java/com/ruoyi/web/controller/fleet/basicData/FleetCompanyMsgController.java
  2. 24 4
      ruoyi-admin/src/main/java/com/ruoyi/web/controller/fleet/orderPlan/ftmsorderbillscarsController.java
  3. 43 12
      ruoyi-admin/src/main/java/com/ruoyi/web/controller/fleet/orderPlan/ftmsorderbillsfeesController.java
  4. 8 3
      ruoyi-admin/src/main/java/com/ruoyi/web/controller/warehouse/basicData/TCorpsController.java
  5. 17 5
      ruoyi-fleet/src/main/java/com/ruoyi/basicData/service/impl/FleetCompanyMsgServiceImpl.java
  6. 19 9
      ruoyi-fleet/src/main/java/com/ruoyi/basicData/service/impl/FleetDriverMsgServiceImpl.java
  7. 8 0
      ruoyi-fleet/src/main/java/com/ruoyi/orderManagement/finance/service/impl/FTmsaccbillsServiceImpl.java
  8. 10 1
      ruoyi-fleet/src/main/java/com/ruoyi/orderPlan/service/IftmsorderbillscarsService.java
  9. 9 5
      ruoyi-fleet/src/main/java/com/ruoyi/orderPlan/service/IftmsorderbillsfeesService.java
  10. 77 5
      ruoyi-fleet/src/main/java/com/ruoyi/orderPlan/service/impl/FtmsorderbillscarsServiceImpl.java
  11. 72 32
      ruoyi-fleet/src/main/java/com/ruoyi/orderPlan/service/impl/FtmsorderbillsfeesServiceImpl.java
  12. 16 27
      ruoyi-fleet/src/main/resources/mapper/orderPlan/ftmsorderbillscarsMapper.xml
  13. 7 0
      ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysDeptMapper.java
  14. 14 0
      ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserMapper.java
  15. 2 3
      ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java
  16. 5 0
      ruoyi-system/src/main/resources/mapper/system/SysDeptMapper.xml
  17. 16 1
      ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml
  18. 97 13
      ruoyi-warehouse/src/main/java/com/ruoyi/basicData/service/impl/TCorpsServiceImpl.java
  19. 1 2
      ruoyi-warehouse/src/main/resources/mapper/basicData/TCorpsMapper.xml

+ 1 - 1
ruoyi-admin/src/main/java/com/ruoyi/web/controller/fleet/basicData/FleetCompanyMsgController.java

@@ -112,7 +112,7 @@ public class FleetCompanyMsgController extends BaseController
     }
 
     /**
-     * 新增司机详情
+     * 新增车队详情
      */
     @PreAuthorize("@ss.hasPermi('basicdata:corps:add')")
     @Log(title = "客户详情", businessType = BusinessType.INSERT)

+ 24 - 4
ruoyi-admin/src/main/java/com/ruoyi/web/controller/fleet/orderPlan/ftmsorderbillscarsController.java

@@ -109,7 +109,7 @@ public class ftmsorderbillscarsController extends BaseController {
     @PostMapping(value = "/selectDriver")
     public AjaxResult selectDriver(@RequestBody Ftmsorderbillscars ftmsorderbillscars) {
         if (StringUtils.isNull(ftmsorderbillscars) || StringUtils.isNull(ftmsorderbillscars.getId())) {
-            return AjaxResult.error("未找到查询条件,请确认");
+            return AjaxResult.error("未找到运单数据,请确认");
         }
         return AjaxResult.success(ftmsorderbillscarsService.selectDriver(ftmsorderbillscars));
     }
@@ -122,15 +122,16 @@ public class ftmsorderbillscarsController extends BaseController {
     @PostMapping(value = "/driverSave")
     @RepeatSubmit
     public AjaxResult driverSave(@RequestParam("cars") String cars,
+                                 @RequestParam("fees") String fees,
                                  @RequestParam("attachs") String attachs,
                                  @RequestParam("operationType") String operationType) {
         if (StringUtils.isEmpty(cars) || "{}".equals(cars)) {
-            return AjaxResult.error("未找到查询条件,请确认");
+            return AjaxResult.error("未找到运单数据,请确认");
         }
         if (StringUtils.isEmpty(operationType) || "{}".equals(operationType)) {
             return AjaxResult.error("未找到状态条件,请确认");
         }
-        return ftmsorderbillscarsService.driverSave(cars, attachs, operationType);
+        return ftmsorderbillscarsService.driverSave(cars, fees, attachs, operationType);
     }
 
     /**
@@ -144,7 +145,7 @@ public class ftmsorderbillscarsController extends BaseController {
                                    @RequestParam("attachs") String attachs,
                                    @RequestParam("operationType") String operationType) {
         if (StringUtils.isEmpty(cars) || "{}".equals(cars)) {
-            return AjaxResult.error("未找到查询条件,请确认");
+            return AjaxResult.error("未找到运单数据,请确认");
         }
         if (StringUtils.isEmpty(operationType) || "{}".equals(operationType)) {
             return AjaxResult.error("未找到状态条件,请确认");
@@ -153,6 +154,25 @@ public class ftmsorderbillscarsController extends BaseController {
     }
 
     /**
+     * 状态跟踪提交  提交
+     */
+    @PreAuthorize("@ss.hasPermi('fleet:ftmsorderbillscars:add')")
+    @Log(title = "车队派车", businessType = BusinessType.INSERT)
+    @PostMapping(value = "/driverSubmit")
+    @RepeatSubmit
+    public AjaxResult driverSubmit(@RequestParam("cars") String cars,
+                                   @RequestParam("fees") String fees,
+                                   @RequestParam("attachs") String attachs) {
+        if (StringUtils.isEmpty(cars) || "{}".equals(cars)) {
+            return AjaxResult.error("未找到运单数据,请确认");
+        }
+        if (StringUtils.isEmpty(fees) || "[]".equals(fees)) {
+            return AjaxResult.error("未找到费用数据,请确认");
+        }
+        return ftmsorderbillscarsService.driverSubmit(cars, fees, attachs);
+    }
+
+    /**
      * 司机操作接单/提箱/装卸货/还卸柜/回单操作  微信提交
      */
     @Log(title = "车队派车", businessType = BusinessType.INSERT)

+ 43 - 12
ruoyi-admin/src/main/java/com/ruoyi/web/controller/fleet/orderPlan/ftmsorderbillsfeesController.java

@@ -23,32 +23,63 @@ public class ftmsorderbillsfeesController extends BaseController {
     @Autowired
     private IftmsorderbillsfeesService iftmsorderbillsfeesService;
 
+    /**
+     * 查询费用是否允许变更
+     */
+    @PreAuthorize("@ss.hasPermi('fleet:ftmsorderbillscars:edit')")
+    @Log(title = "费用补充", businessType = BusinessType.INSERT)
+    @GetMapping("/ftmsorderbillsChange/{fId}")
+    public AjaxResult ftmsorderbillsChange(@PathVariable("fId") Long fId) {
+        if (StringUtils.isNull(fId)) {
+            return AjaxResult.error("未找到数据,请确认");
+        }
+        String types = "change";
+        return iftmsorderbillsfeesService.ftmsorderbillsChange(fId, types);
+    }
+
+    /**
+     * 删除单条费用
+     */
+    @PreAuthorize("@ss.hasPermi('fleet:ftmsorderbillscars:edit')")
+    @Log(title = "费用补充", businessType = BusinessType.INSERT)
+    @GetMapping("/singleFleetDelete/{fId}")
+    public AjaxResult singleFleetDelete(@PathVariable("fId") Long fId) {
+        if (StringUtils.isNull(fId)) {
+            return AjaxResult.error("未找到数据,请确认");
+        }
+        String types = "delete";
+        return iftmsorderbillsfeesService.ftmsorderbillsChange(fId, types);
+    }
 
     /**
-     * 根据id查询费用详细信息
+     * 撤销单条费用
      */
-    @PreAuthorize("@ss.hasPermi('fleet:ftmsorderbillsfees:query')")
-    @GetMapping(value = "/{id}")
-    public AjaxResult getInfo(@PathVariable("id") Long id) {
-        if (StringUtils.isNull(id)) {
-            return AjaxResult.error("未找到查询条件,请确认");
+    @PreAuthorize("@ss.hasPermi('fleet:ftmsorderbillscars:edit')")
+    @Log(title = "费用补充", businessType = BusinessType.INSERT)
+    @GetMapping("/revokeFleetDelete/{fId}")
+    public AjaxResult revokeFleetDelete(@PathVariable("fId") Long fId) {
+        if (StringUtils.isNull(fId)) {
+            return AjaxResult.error("未找到数据,请确认");
         }
-        return AjaxResult.success(iftmsorderbillsfeesService.selectFTmsorderbillsfeesByIdMap(id));
+        String types = "revoke";
+        return iftmsorderbillsfeesService.ftmsorderbillsChange(fId, types);
     }
 
     /**
-     * 费用提交
+     * 单条费用提交
      */
-    @PreAuthorize("@ss.hasPermi('fleet:ftmsorderbillsfees:add')")
-    @Log(title = "【车辆】", businessType = BusinessType.INSERT)
+    @PreAuthorize("@ss.hasPermi('fleet:ftmsorderbillscars:add')")
+    @Log(title = "费用补充", businessType = BusinessType.INSERT)
     @PostMapping
     public AjaxResult add(@RequestParam("cars") String cars,
-                          @RequestParam("status") long status,
                           @RequestParam("ftmsorderbillsfees") String ftmsorderbillsfees) {
         if (StringUtils.isEmpty(cars) || "{}".equals(cars)) {
             return AjaxResult.error("未找到主表数据,请确认");
         }
-        return iftmsorderbillsfeesService.insertFTmsorderbillsfeesAdd(cars, status, ftmsorderbillsfees);
+        if (StringUtils.isEmpty(ftmsorderbillsfees) || "{}".equals(ftmsorderbillsfees)) {
+            return AjaxResult.error("未找到费用数据,请确认");
+        }
+        return iftmsorderbillsfeesService.insertFTmsorderbillsfeesAdd(cars, ftmsorderbillsfees);
     }
 
 }

+ 8 - 3
ruoyi-admin/src/main/java/com/ruoyi/web/controller/warehouse/basicData/TCorpsController.java

@@ -11,7 +11,9 @@ import com.ruoyi.common.core.domain.AjaxResult;
 import com.ruoyi.common.core.domain.model.LoginUser;
 import com.ruoyi.common.core.page.TableDataInfo;
 import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.common.utils.SecurityUtils;
 import com.ruoyi.common.utils.ServletUtils;
+import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.common.utils.poi.ExcelUtil;
 import com.ruoyi.common.utils.spring.SpringUtils;
 import com.ruoyi.framework.web.service.TokenService;
@@ -100,9 +102,12 @@ public class TCorpsController extends BaseController {
         } else if (UserConstants.NOT_UNIQUE.equals(tCorpsService.checkULoginAccountUnique(tCorps1))) {
             return AjaxResult.error("新增信息'" + tCorps1.getfCname() + "'失败,登录账号已存在");
         }
-        // 获取当前的用户
-        LoginUser loginUser = SpringUtils.getBean(TokenService.class).getLoginUser(ServletUtils.getRequest());
-        return tCorpsService.insertTCorps(tCorps, tCustomerContacts, loginUser);
+        if ("2".equals(SecurityUtils.getLoginUser().getUser().getUserSystem())) {
+            if (StringUtils.isEmpty(tCustomerContacts) || "[]".equals(tCustomerContacts)) {
+                return AjaxResult.error("未找到客户联系人信息,请确认");
+            }
+        }
+        return tCorpsService.insertTCorps(tCorps, tCustomerContacts, SecurityUtils.getLoginUser());
     }
 
     /**

+ 17 - 5
ruoyi-fleet/src/main/java/com/ruoyi/basicData/service/impl/FleetCompanyMsgServiceImpl.java

@@ -8,6 +8,7 @@ import com.ruoyi.basicData.mapper.TCorpsMapper;
 import com.ruoyi.basicData.service.IFleetCompanyMsgService;
 import com.ruoyi.common.constant.UserConstants;
 import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.core.domain.entity.SysDept;
 import com.ruoyi.common.core.domain.entity.SysRole;
 import com.ruoyi.common.core.domain.entity.SysUser;
 import com.ruoyi.common.utils.SecurityUtils;
@@ -15,6 +16,7 @@ import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.orderPlan.domain.Ftmsorderbillsplans;
 import com.ruoyi.orderPlan.mapper.FtmsorderbillsplansMapper;
 import com.ruoyi.system.domain.SysUserRole;
+import com.ruoyi.system.mapper.SysDeptMapper;
 import com.ruoyi.system.mapper.SysRoleMapper;
 import com.ruoyi.system.mapper.SysUserMapper;
 import com.ruoyi.system.mapper.SysUserRoleMapper;
@@ -48,6 +50,9 @@ public class FleetCompanyMsgServiceImpl implements IFleetCompanyMsgService {
     private TCorpsMapper tCorpsMapper;
 
     @Autowired
+    private SysDeptMapper sysDeptMapper;
+
+    @Autowired
     private SysUserMapper sysUserMapper;
 
     @Autowired
@@ -105,9 +110,14 @@ public class FleetCompanyMsgServiceImpl implements IFleetCompanyMsgService {
         tCorps.setfTypeid(typeValue);
         tCorps.setfTypename("车队");
         tCorps.setfStatus("0");
+        SysDept dept = sysDeptMapper.selectDeptByDeptName("外部用户");
+        if (StringUtils.isNull(dept)) {
+            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+            return AjaxResult.error("未找到部门信息,请添加后再提交");
+        }
         if (StringUtils.isNotNull(tCorps.getfId())) {
-            tCorps.setUpdateBy(SecurityUtils.getUsername());
             tCorps.setUpdateTime(new Date());
+            tCorps.setUpdateBy(SecurityUtils.getUsername());
             tCorpsMapper.updateTCorps(tCorps);
             // 更新用户信息
             SysUser sysUser = sysUserMapper.selectUserByUserName(tCorps.getLoginAccount());
@@ -118,6 +128,7 @@ public class FleetCompanyMsgServiceImpl implements IFleetCompanyMsgService {
             sysUser.setUserType("22");
             sysUser.setUserSystem("2");
             sysUser.setUpdateTime(new Date());
+            sysUser.setDeptId(dept.getDeptId());
             sysUser.setPhonenumber(tCorps.getfTel());
             sysUser.setUpdateBy(SecurityUtils.getUsername());
             sysUser.setPassword(SecurityUtils.encryptPassword(tCorps.getfTel()));
@@ -127,7 +138,7 @@ public class FleetCompanyMsgServiceImpl implements IFleetCompanyMsgService {
             tCorps.setCreateTime(new Date());
             tCorps.setCreateBy(SecurityUtils.getUsername());
             tCorpsMapper.insertTCorps(tCorps);
-            AjaxResult ajaxResult = createUser(tCorps);
+            AjaxResult ajaxResult = createUser(tCorps, dept);
             String code = ajaxResult.get("code").toString();
             if ("500".equals(code)) {
                 TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
@@ -138,12 +149,13 @@ public class FleetCompanyMsgServiceImpl implements IFleetCompanyMsgService {
     }
 
     @Transactional
-    public AjaxResult createUser(TCorps tCorps) {
+    public AjaxResult createUser(TCorps tCorps, SysDept dept) {
         // 创建用户
         SysUser user = new SysUser();
         user.setUserType("22");
         user.setUserSystem("2");
         user.setCreateTime(new Date());
+        user.setDeptId(dept.getDeptId());
         user.setNickName(tCorps.getfTel());
         user.setPhonenumber(tCorps.getfTel());
         user.setUserName(tCorps.getLoginAccount());
@@ -151,10 +163,10 @@ public class FleetCompanyMsgServiceImpl implements IFleetCompanyMsgService {
         user.setPassword(SecurityUtils.encryptPassword(tCorps.getfTel()));
         sysUserMapper.insertUser(user);
         // 查询是否存在车队 角色
-        SysRole role = sysRoleMapper.selectRoleByName("车队");
+        SysRole role = sysRoleMapper.selectRoleByName("外部用户");
         if (StringUtils.isNull(role)) {
             TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
-            return AjaxResult.error("未找到司机角色,请添加角色后再提交");
+            return AjaxResult.error("未找到外部用户角色,请添加角色后再提交");
         }
         // 创建用户与角色关联
         List<SysUserRole> list = new ArrayList<SysUserRole>();

+ 19 - 9
ruoyi-fleet/src/main/java/com/ruoyi/basicData/service/impl/FleetDriverMsgServiceImpl.java

@@ -8,6 +8,7 @@ import com.ruoyi.basicData.mapper.FleetDriverMsgMapper;
 import com.ruoyi.basicData.mapper.TCorpsMapper;
 import com.ruoyi.basicData.service.IFleetDriverMsgService;
 import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.core.domain.entity.SysDept;
 import com.ruoyi.common.core.domain.entity.SysRole;
 import com.ruoyi.common.core.domain.entity.SysUser;
 import com.ruoyi.common.utils.DateUtils;
@@ -16,10 +17,7 @@ import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.orderPlan.domain.Ftmsorderbillscars;
 import com.ruoyi.orderPlan.mapper.FtmsorderbillscarsMapper;
 import com.ruoyi.system.domain.SysUserRole;
-import com.ruoyi.system.mapper.SysRoleMapper;
-import com.ruoyi.system.mapper.SysUserMapper;
-import com.ruoyi.system.mapper.SysUserPostMapper;
-import com.ruoyi.system.mapper.SysUserRoleMapper;
+import com.ruoyi.system.mapper.*;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -49,6 +47,9 @@ public class FleetDriverMsgServiceImpl implements IFleetDriverMsgService {
     private SysUserMapper userMapper;
 
     @Autowired
+    private SysDeptMapper sysDeptMapper;
+
+    @Autowired
     private SysUserPostMapper userPostMapper;
 
     @Autowired
@@ -105,13 +106,18 @@ public class FleetDriverMsgServiceImpl implements IFleetDriverMsgService {
             TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
             return AjaxResult.error("请填写必输项");
         }
+        SysDept dept = sysDeptMapper.selectDeptByDeptName("外部用户");
+        if (StringUtils.isNull(dept)) {
+            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+            return AjaxResult.error("未找到部门信息,请添加后再提交");
+        }
         String typeValue = "[\"102\"]";
         tCorps.setfTypeid(typeValue);
         tCorps.setfTypename("司机");
         tCorps.setfStatus("0");
         if (null != tCorps.getfId()) {
 //            updateDriverPhone(tCorps);
-            AjaxResult result = this.updateFleetCarManagePhone(tCorps);
+            AjaxResult result = updateFleetCarManagePhone(tCorps, dept);
             String ajaxCode = result.get("code").toString();
             if ("500".equals(ajaxCode)) {
                 TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
@@ -140,6 +146,7 @@ public class FleetDriverMsgServiceImpl implements IFleetDriverMsgService {
                 user.setRelatedNo("T");
                 user.setUserSystem("2");
                 user.setUpdateTime(new Date());
+                user.setDeptId(dept.getDeptId());
                 user.setNickName(tCorps.getfName());
                 user.setUpdateBy(SecurityUtils.getUsername());
                 user.setPassword(SecurityUtils.encryptPassword(tCorps.getfTel()));
@@ -150,6 +157,7 @@ public class FleetDriverMsgServiceImpl implements IFleetDriverMsgService {
                 SysUser use = new SysUser();
                 use.setStatus("1");
                 use.setUserSystem("2");
+                use.setDeptId(dept.getDeptId());
                 use.setUserName(tCorps.getfTel());
                 use.setNickName(tCorps.getfTel());
                 use.setPhonenumber(tCorps.getfTel());
@@ -162,7 +170,7 @@ public class FleetDriverMsgServiceImpl implements IFleetDriverMsgService {
             }
             // 新增用户与角色管理
             // 查询是否存在车队 角色
-            SysRole role = roleMapper.selectRoleByName("司机");
+            SysRole role = roleMapper.selectRoleByName("外部用户");
             if (StringUtils.isNull(role)) {
                 TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                 return AjaxResult.error("未找到司机角色,请创建司机角色后提交");
@@ -207,7 +215,7 @@ public class FleetDriverMsgServiceImpl implements IFleetDriverMsgService {
     }
 
     @Transactional
-    public AjaxResult updateFleetCarManagePhone(TCorps tCorps) {
+    public AjaxResult updateFleetCarManagePhone(TCorps tCorps, SysDept dept) {
         TCorps corps = corpsMapper.selectTCorpsById(tCorps.getfId());
         SysUser sysUser = userMapper.selectUserByTel(corps.getfTel());
         if (StringUtils.isNotNull(sysUser)) {
@@ -215,9 +223,10 @@ public class FleetDriverMsgServiceImpl implements IFleetDriverMsgService {
             // 跟新用户手机号以及姓名
             sysUser.setNickName(tCorps.getfName());
             if (!sysUser.getPhonenumber().equals(tCorps.getfTel())) {
-                user.setUserSystem("2");
                 user.setStatus("1");
                 user.setUserType("11");
+                user.setUserSystem("2");
+                user.setDeptId(dept.getDeptId());
                 user.setUserName(tCorps.getfTel());
                 user.setNickName(tCorps.getfName());
                 user.setPhonenumber(tCorps.getfTel());
@@ -226,7 +235,7 @@ public class FleetDriverMsgServiceImpl implements IFleetDriverMsgService {
                 user.setCreateBy(SecurityUtils.getUsername());
                 userMapper.insertUser(user);
                 // 查询是否存在车队 角色
-                SysRole role = roleMapper.selectRoleByName("司机");
+                SysRole role = roleMapper.selectRoleByName("外部用户");
                 if (StringUtils.isNull(role)) {
                     TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                     return AjaxResult.error("未找到司机角色,请创建司机角色后提交");
@@ -240,6 +249,7 @@ public class FleetDriverMsgServiceImpl implements IFleetDriverMsgService {
                 userRoleMapper.batchUserRole(list);
             }
             sysUser.setUpdateTime(new Date());
+            sysUser.setDeptId(dept.getDeptId());
             sysUser.setUpdateBy(SecurityUtils.getUsername());
             userMapper.updateUser(sysUser);
         }

+ 8 - 0
ruoyi-fleet/src/main/java/com/ruoyi/orderManagement/finance/service/impl/FTmsaccbillsServiceImpl.java

@@ -263,6 +263,14 @@ public class FTmsaccbillsServiceImpl implements IFTmsaccbillsService {
         }
     }
 
+    /**
+     *  费用确认
+     * @param tfee
+     * @param tfeeDo
+     * @param loginUser
+     * @param fBilltype
+     * @return
+     */
     @Override
     @Transactional
     public AjaxResult confirm(String tfee, String tfeeDo, LoginUser loginUser, String fBilltype) {

+ 10 - 1
ruoyi-fleet/src/main/java/com/ruoyi/orderPlan/service/IftmsorderbillscarsService.java

@@ -92,7 +92,7 @@ public interface IftmsorderbillscarsService {
      * @param operationType 状态
      * @return  结果
      */
-    public AjaxResult driverSave(String cars, String attachs, String operationType);
+    public AjaxResult driverSave(String cars, String fees, String attachs, String operationType);
 
     /**
      *  司机操作接单/提箱/装卸货/还卸柜/回单操作  提交
@@ -154,4 +154,13 @@ public interface IftmsorderbillscarsService {
      * @return
      */
     public Ftmsorderbills judgmentFleet(Ftmsorderbills ftmsorderbills);
+
+    /**
+     *  状态跟踪提交
+     * @param cars      车辆信息
+     * @param fees      费用信息
+     * @param attachs   附件信息
+     * @return  结果
+     */
+    public AjaxResult driverSubmit(String cars, String fees, String attachs);
 }

+ 9 - 5
ruoyi-fleet/src/main/java/com/ruoyi/orderPlan/service/IftmsorderbillsfeesService.java

@@ -21,16 +21,13 @@ public interface IftmsorderbillsfeesService {
      */
     public Ftmsorderbillsfees selectFTmsorderbillsfeesById(Long fId);
 
-    public Map<String, Object> selectFTmsorderbillsfeesByIdMap(Long id);
-
     /**
-     *  费用提交、保存
+     *  单条费用提交
      * @param cars      主表信息
-     * @param status    状态
      * @param fees      费用
      * @return  结果
      */
-    public AjaxResult insertFTmsorderbillsfeesAdd(String cars, long status, String fees);
+    public AjaxResult insertFTmsorderbillsfeesAdd(String cars, String fees);
 
 
     /**
@@ -72,4 +69,11 @@ public interface IftmsorderbillsfeesService {
      * @return 结果
      */
     public int deleteFTmsorderbillsfeesById(Long fId);
+
+    /**
+     *  查询费用是否允许变更、删除
+     * @param fId   费用信息id
+     * @return  结果
+     */
+    public AjaxResult ftmsorderbillsChange(Long fId, String types);
 }

+ 77 - 5
ruoyi-fleet/src/main/java/com/ruoyi/orderPlan/service/impl/FtmsorderbillscarsServiceImpl.java

@@ -187,12 +187,10 @@ public class FtmsorderbillscarsServiceImpl implements IftmsorderbillscarsService
                 return null;
             }
         }
-        String roleType = "车队";
         // 判断是不是车队
-        SysUser sysUser = sysUserRoleMapper.selectRoleUserByUserId(user.getUserId(), roleType);
-        if (StringUtils.isNotNull(sysUser)) {
+        if ("22".equals(user.getUserType())) {
             ftmsorderbills.setIsFleet("1");
-            TCorps corps = tCorpsMapper.selectTCorpsByFTel(sysUser.getPhonenumber());
+            TCorps corps = tCorpsMapper.selectTCorpsByFTel(user.getPhonenumber());
             ftmsorderbills.setFleetId(corps.getfId());
         }
         return ftmsorderbillscarsMapper.getButtonValue(ftmsorderbills);
@@ -233,6 +231,7 @@ public class FtmsorderbillscarsServiceImpl implements IftmsorderbillscarsService
         Long id = ftmsorderbillscars.getId();
         map.put("cars", ftmsorderbillscarsMapper.selectTmsorderbillsCarsByDriver(id));
         Ftmsorderbillsattachs ftmsorderbillsattachs = new Ftmsorderbillsattachs();
+        map.put("feesList", ftmsorderbillsfeesMapper.selectFTmsorderbillsfeesByPId(id));
         ftmsorderbillsattachs.setPId(id);
         ftmsorderbillsattachs.setActId(1030L);
         map.put("attachs", ftmsorderbillsattachsMapper.selectftmsorderbillsattachsList(ftmsorderbillsattachs));
@@ -272,7 +271,7 @@ public class FtmsorderbillscarsServiceImpl implements IftmsorderbillscarsService
      */
     @Override
     @Transactional
-    public AjaxResult driverSave(String cars, String attachs, String operationType) {
+    public AjaxResult driverSave(String cars, String fees, String attachs, String operationType) {
         Ftmsorderbillscars tmsorderbillscars = JSONArray.parseObject(cars, Ftmsorderbillscars.class);
         Ftmsorderbills ftmsorderbills = ftmsorderbillsMapper.selectftmsorderbillsById(tmsorderbillscars.getOrgId());
         tmsorderbillscars.setUpdateTime(new Date());
@@ -286,6 +285,25 @@ public class FtmsorderbillscarsServiceImpl implements IftmsorderbillscarsService
         ftmsorderbillsattachs.setPId(pId);
         ftmsorderbillsattachs.setActId(orderStatus);
         ftmsorderbillsattachsMapper.deleteftmsorderbillsattachs(ftmsorderbillsattachs);
+        ftmsorderbillsfeesMapper.deleteFTmsorderbillsfeesByPId(pId);
+        if (StringUtils.isNotEmpty(fees) && !"[]".equals(fees)) {
+            JSONArray attachJson = JSONArray.parseArray(fees);
+            List<Ftmsorderbillsfees> ftmsorderbillsfees = JSONObject.parseArray(attachJson.toJSONString(), Ftmsorderbillsfees.class);
+            for (Ftmsorderbillsfees f : ftmsorderbillsfees) {
+                f.setfPid(pId);
+                if (StringUtils.isNull(f.getfId())) {
+                    f.setfStatus(2L);
+                }
+                f.setOrgId(orgId);
+                f.setActId(orderStatus);
+                f.setCreateTime(new Date());
+                f.setCreateBy(SecurityUtils.getUsername());
+                if (ftmsorderbillsfeesMapper.insertFTmsorderbillsfees(f) <= 0) {
+                    TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+                    return AjaxResult.error("更新附件数据失败,若多次失败请联系管理员");
+                }
+            }
+        }
         if (StringUtils.isNotEmpty(attachs) && !"[]".equals(attachs)) {
             JSONArray attachJson = JSONArray.parseArray(attachs);
             List<Ftmsorderbillsattachs> tmsorderbillsattachsList = JSONObject.parseArray(attachJson.toJSONString(), Ftmsorderbillsattachs.class);
@@ -409,6 +427,60 @@ public class FtmsorderbillscarsServiceImpl implements IftmsorderbillscarsService
     }
 
     /**
+     *  状态跟踪提交
+     * @param cars      车辆信息
+     * @param fees      费用信息
+     * @param attachs   附件信息
+     * @return  结果
+     */
+    @Transactional
+    @Override
+    public AjaxResult driverSubmit(String cars, String fees, String attachs) {
+        Ftmsorderbillscars tmsorderbillscars = JSONArray.parseObject(cars, Ftmsorderbillscars.class);
+        long pId = tmsorderbillscars.getId();
+        long orgId = tmsorderbillscars.getOrgId();
+        Ftmsorderbillscars ftmsorderbillscars = ftmsorderbillscarsMapper.selectftmsorderbillscarsById(pId);
+        if (ftmsorderbillscars.getBillStatus() < 6L) {
+            return AjaxResult.error("运单状态异常:" + ftmsorderbillscars.getBillStatus());
+        }
+        if (ftmsorderbillscars.getBillStatus() == 7L) {
+            return AjaxResult.error("该运单不允许重复提交");
+        }
+        tmsorderbillscars.setBillStatus(7L);
+        tmsorderbillscars.setUpdateTime(new Date());
+        tmsorderbillscars.setUpdateBy(SecurityUtils.getUsername());
+        ftmsorderbillscarsMapper.updateftmsorderbillscars(tmsorderbillscars);
+        if (StringUtils.isNotEmpty(fees) && !"[]".equals(fees)) {
+            JSONArray attachJson = JSONArray.parseArray(fees);
+            List<Ftmsorderbillsfees> ftmsorderbillsfeesList = JSONObject.parseArray(attachJson.toJSONString(), Ftmsorderbillsfees.class);
+            int line = 0;
+            for (Ftmsorderbillsfees f : ftmsorderbillsfeesList) {
+                line++;
+                if (StringUtils.isNull(f.getfBillstatus()) || f.getfBillstatus() != 6) {
+                    TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+                    return AjaxResult.error("费用信息第"+line+"行,状态异常,请确认是否提交");
+                }
+            }
+        }
+        ftmsorderbillsattachsMapper.deleteftmsorderbillsattachsByPId(pId);
+        if (StringUtils.isNotEmpty(attachs) && !"[]".equals(attachs)) {
+            JSONArray attachJson = JSONArray.parseArray(attachs);
+            List<Ftmsorderbillsattachs> tmsorderbillsattachsList = JSONObject.parseArray(attachJson.toJSONString(), Ftmsorderbillsattachs.class);
+            for (Ftmsorderbillsattachs a : tmsorderbillsattachsList) {
+                a.setPId(pId);
+                a.setOrgId(orgId);
+                a.setCreateTime(new Date());
+                a.setCreateBy(SecurityUtils.getUsername());
+                if (ftmsorderbillsattachsMapper.insertftmsorderbillsattachs(a) <= 0) {
+                    TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+                    return AjaxResult.error("更新附件数据失败,若多次失败请联系管理员");
+                }
+            }
+        }
+        return AjaxResult.success();
+    }
+
+    /**
      * 修改车队派车
      *
      * @param ftmsorderbillscars 车队派车

+ 72 - 32
ruoyi-fleet/src/main/java/com/ruoyi/orderPlan/service/impl/FtmsorderbillsfeesServiceImpl.java

@@ -19,7 +19,9 @@ import com.ruoyi.system.mapper.SysDeptMapper;
 import com.ruoyi.system.mapper.SysUserMapper;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
+import java.math.BigDecimal;
 import java.util.*;
 
 /**
@@ -55,7 +57,6 @@ public class FtmsorderbillsfeesServiceImpl implements IftmsorderbillsfeesService
     private TCorpsMapper tCorpsMapper;
 
 
-
     /**
      * 查询车队费用
      *
@@ -67,47 +68,34 @@ public class FtmsorderbillsfeesServiceImpl implements IftmsorderbillsfeesService
         return fTmsorderbillsfeesMapper.selectFTmsorderbillsfeesById(fId);
     }
 
-    @Override
-    public Map<String, Object> selectFTmsorderbillsfeesByIdMap(Long id) {
-        Map<String, Object> map = ftmsorderbillscarsMapper.selectTmsorderbillsCarsByDriver(id);
-        // 费用信息
-        Ftmsorderbillsfees ftmsorderbillsfees = new Ftmsorderbillsfees();
-        ftmsorderbillsfees.setfPid(id);
-        map.put("ftmsorderbillsfees", fTmsorderbillsfeesMapper.selectFTmsorderbillsfeesList(ftmsorderbillsfees)); // 费用
-        return map;
-    }
-
     /**
-     *  费用提交、保存
+     * 单条费用提交
      *
-     * @param cars      主表信息
-     * @param status    状态
-     * @param fees      费用
-     * @return  结果
+     * @param cars 主表信息
+     * @param fees 费用
+     * @return 结果
      */
     @Override
-    public AjaxResult insertFTmsorderbillsfeesAdd(String cars, long status, String fees) {
+    public AjaxResult insertFTmsorderbillsfeesAdd(String cars, String fees) {
         Map<String, Object> map = new HashMap<>();
         Ftmsorderbillscars tmsorderbillscars = JSONArray.parseObject(cars, Ftmsorderbillscars.class);
         Long pId = tmsorderbillscars.getId();
         Long orgId = tmsorderbillscars.getOrgId();
         //  费用添加
-        if (StringUtils.isNotNull(fees) && !"[]".equals(fees)) {
-            JSONArray jsonDrArray = JSONArray.parseArray(fees);
-            List<Ftmsorderbillsfees> ftmsorderbillsfeesList = JSONObject.parseArray(jsonDrArray.toJSONString(), Ftmsorderbillsfees.class);
-            fTmsorderbillsfeesMapper.deleteFTmsorderbillsfeesByPId(pId);
-            for (Ftmsorderbillsfees ftmsorderbillsfees : ftmsorderbillsfeesList) {
-                ftmsorderbillsfees.setfPid(pId);
-                ftmsorderbillsfees.setOrgId(orgId);
-                ftmsorderbillsfees.setfBillstatus(status);
-                ftmsorderbillsfees.setCreateTime(new Date());
-                ftmsorderbillsfees.setCreateBy(SecurityUtils.getUsername());
-                fTmsorderbillsfeesMapper.insertFTmsorderbillsfees(ftmsorderbillsfees);
-            }
-        }
-        Ftmsorderbillsfees ftmsorderbillsfees = new Ftmsorderbillsfees();
+        Ftmsorderbillsfees ftmsorderbillsfees = JSONArray.parseObject(fees, Ftmsorderbillsfees.class);
         ftmsorderbillsfees.setfPid(pId);
-        map.put("ftmsorderbillsfeesList",fTmsorderbillsfeesMapper.selectFTmsorderbillsfeesList(ftmsorderbillsfees));
+        ftmsorderbillsfees.setOrgId(orgId);
+        ftmsorderbillsfees.setfBillstatus(6L);
+        if (StringUtils.isNull(ftmsorderbillsfees.getfId())) {
+            ftmsorderbillsfees.setCreateTime(new Date());
+            ftmsorderbillsfees.setCreateBy(SecurityUtils.getUsername());
+            fTmsorderbillsfeesMapper.insertFTmsorderbillsfees(ftmsorderbillsfees);
+        } else {
+            ftmsorderbillsfees.setUpdateTime(new Date());
+            ftmsorderbillsfees.setUpdateBy(SecurityUtils.getUsername());
+            fTmsorderbillsfeesMapper.updateFTmsorderbillsfees(ftmsorderbillsfees);
+        }
+        map.put("ftmsorderbillsfeesList", fTmsorderbillsfeesMapper.selectFTmsorderbillsfeesById(ftmsorderbillsfees.getfId()));
         return AjaxResult.success(map);
     }
 
@@ -167,4 +155,56 @@ public class FtmsorderbillsfeesServiceImpl implements IftmsorderbillsfeesService
     public int deleteFTmsorderbillsfeesById(Long fId) {
         return fTmsorderbillsfeesMapper.deleteFTmsorderbillsfeesById(fId);
     }
+
+    /**
+     * 查询费用是否允许变更、删除
+     *
+     * @param fId 费用信息id
+     * @return 结果
+     */
+    @Transactional
+    @Override
+    public AjaxResult ftmsorderbillsChange(Long fId, String types) {
+        Ftmsorderbillsfees ftmsorderbillsfees = fTmsorderbillsfeesMapper.selectFTmsorderbillsfeesById(fId);
+        if (StringUtils.isNull(ftmsorderbillsfees)) {
+            if ("change".equals(types) || "revoke".equals(types)) {
+                return AjaxResult.error("未找到该费用信息,请确认该费用信息是否存在");
+            } else {
+                fTmsorderbillsfeesMapper.deleteFTmsorderbillsfeesById(fId);
+                return AjaxResult.success();
+            }
+        }
+        if (StringUtils.isNull(ftmsorderbillsfees.getfBillstatus())) {
+            if ("revoke".equals(types)) {
+                return AjaxResult.error("费用状态异常,请确认该费用信息状态");
+            } else if ("change".equals(types)) {
+                return AjaxResult.success();
+            }
+        }
+        if (ftmsorderbillsfees.getfBillstatus() == 3L) {
+            if ("revoke".equals(types)) {
+                return AjaxResult.error("该费用已被撤销,请勿重复撤销");
+            } else if ("change".equals(types)) {
+                return AjaxResult.error("该费用信息已撤销不允许修改");
+            } else {
+                fTmsorderbillsfeesMapper.deleteFTmsorderbillsfeesById(fId);
+                return AjaxResult.success();
+            }
+        }
+        if (ftmsorderbillsfees.getfBillstatus() == 6L) {
+            if (StringUtils.isNotNull(ftmsorderbillsfees.getfAccamount()) && ftmsorderbillsfees.getfAccamount().compareTo(new BigDecimal(0)) == 1) {
+                return AjaxResult.error("该费用信息已对账不允许修改");
+            }
+            if (StringUtils.isNotNull(ftmsorderbillsfees.getfStlamount()) && ftmsorderbillsfees.getfStlamount().compareTo(new BigDecimal(0)) == 1) {
+                return AjaxResult.error("该费用信息已产生金额不允许修改");
+            }
+        }
+        if ("delete".equals(types)) {
+            fTmsorderbillsfeesMapper.deleteFTmsorderbillsfeesById(fId);
+        } else if ("revoke".equals(types)) {
+            ftmsorderbillsfees.setfBillstatus(3L);
+            fTmsorderbillsfeesMapper.updateFTmsorderbillsfees(ftmsorderbillsfees);
+        }
+        return AjaxResult.success();
+    }
 }

+ 16 - 27
ruoyi-fleet/src/main/resources/mapper/orderPlan/ftmsorderbillscarsMapper.xml

@@ -516,7 +516,7 @@
             AND dic.dict_type = 'data_cntrId'
             LEFT JOIN t_corps driver ON driver.f_id = c.driver_user_id
         <where>
-            c.bill_status = 6
+            <if test="carStatus == null">and c.bill_status &gt;= 6</if>
             <if test="corpId != null">and t.corp_id = #{corpId}</if>
             <if test="billType != null">and t.bill_type = #{billType}</if>
             <if test="transType != null">and t.trans_type = #{transType}</if>
@@ -524,12 +524,11 @@
             <if test="goodsId != null">and t.goods_id = #{goodsId}</if>
             <if test="driverTel != null">and c.driver_tel = #{driverTel}</if>
             <if test="orderStatus != null">and c.order_status = #{orderStatus}</if>
-            <if test="carStatus != null and carStatus == 'planDate'">and c.plan_date IS NOT NULL</if>
-            <if test="carStatus != null and carStatus == 'acceptDate'">and c.accept_date IS NOT NULL</if>
-            <if test="carStatus != null and carStatus == 'loadDate'">and c.load_date IS NOT NULL</if>
-            <if test="carStatus != null and carStatus == 'mdLoadDate'">and c.md_load_date IS NOT NULL</if>
-            <if test="carStatus != null and carStatus == 'unLoadDate'">and c.un_load_date IS NOT NULL</if>
-            <if test="carStatus != null and carStatus == 'waybillDate'">and c.waybill_date IS NOT NULL</if>
+            <if test="carStatus != null and carStatus == 'planDate'">and c.accept_date IS NOT NULL</if>
+            <if test="carStatus != null and carStatus == 'acceptDate'">and c.order_status = 20</if>
+            <if test="carStatus != null and carStatus == 'loadDate'">and c.order_status = 40</if>
+            <if test="carStatus != null and carStatus == 'mdLoadDate'">and c.order_status = 50</if>
+            <if test="carStatus != null and carStatus == 'unLoadDate'">and c.bill_status = 7</if>
             <if test="isFleet != null and isFleet == 1">
                 AND fleet.f_id = #{fleetId}
             </if>
@@ -682,7 +681,7 @@
             LEFT JOIN t_corps fleet ON fleet.f_id = car.carcor_pid
             LEFT JOIN t_corps t ON t.f_id = bill.corp_id
         <where>
-            car.bill_status = 6
+            car.bill_status &gt;= 6
             <if test="isFleet != null and isFleet == 1">
                 AND fleet.f_id = #{fleetId}
             </if>
@@ -702,7 +701,7 @@
         WHERE
             p.create_time &gt;= #{currentDay[0]}
             AND p.create_time &lt;= #{currentDay[1]}
-            AND p.bill_status = 6
+            AND p.bill_status &gt;= 6
             <if test="isFleet != null and isFleet == 1">
                 AND fleet.f_id = #{fleetId}
             </if>
@@ -715,7 +714,7 @@
             F_TMSORDERBILLSCARS car
             LEFT JOIN t_corps fleet ON fleet.f_id = car.carcor_pid
         <where>
-            car.bill_status = 6
+            car.bill_status &gt;= 6
             and car.create_time &gt;= #{currentDay[0]}
             and car.create_time &lt;= #{currentDay[1]}
             <if test="isFleet != null and isFleet == 1">
@@ -725,34 +724,24 @@
     </select>
 
     <select id="getButtonValue" parameterType="ftmsorderbills" resultType="Map">
---         SELECT
---             order_status orderStatus,
---             COUNT( id ) cntrQty
---         FROM
---             F_TMSORDERBILLSCARS
---         WHERE
---             bill_status = 6
---         GROUP BY
---             order_status
         SELECT
             COUNT( c.id ) AS quantity,
-            COUNT( CASE WHEN c.plan_date IS NOT NULL THEN 1 END ) AS planDate,
-            COUNT( CASE WHEN c.accept_date IS NOT NULL THEN 1 END ) AS acceptDate,
-            COUNT( CASE WHEN c.load_date IS NOT NULL THEN 1 END ) AS loadDate,
-            COUNT( CASE WHEN c.md_load_date IS NOT NULL THEN 1 END ) AS mdLoadDate,
-            COUNT( CASE WHEN c.un_load_date IS NOT NULL THEN 1 END ) AS unLoadDate,
-            COUNT( CASE WHEN c.waybill_date IS NOT NULL THEN 1 END ) AS waybillDate
+            COUNT( CASE WHEN c.accept_date IS NULL THEN 1 END ) AS planDate,
+            COUNT( CASE WHEN c.order_status = 20 THEN 1 END ) AS acceptDate,
+            COUNT( CASE WHEN c.order_status = 40 THEN 1 END ) AS loadDate,
+            COUNT( CASE WHEN c.order_status = 50 THEN 1 END ) AS mdLoadDate,
+            COUNT( CASE WHEN c.order_status = 60 THEN 1 END ) AS unLoadDate
         FROM
             F_TMSORDERBILLSCARS c
             LEFT JOIN t_corps fleet ON fleet.f_id = c.carcor_pid
         WHERE
-            c.bill_status = 6
+            c.bill_status &gt;= 6
             <if test="driverTel != null">and c.driver_tel = #{driverTel}</if>
             <if test="isFleet != null and isFleet == 1">AND fleet.f_id = #{fleetId}</if>
     </select>
 
     <select id="selectMissedOrdersCount" parameterType="string" resultType="Integer">
-        select count(id) from F_TMSORDERBILLSCARS where driver_tel = #{phoneNumber} and bill_status = 6
+        select count(id) from F_TMSORDERBILLSCARS where driver_tel = #{phoneNumber} and order_status = 10 and bill_status &gt;= 6
     </select>
 
     <insert id="insertftmsorderbillscars" parameterType="ftmsorderbillscars" useGeneratedKeys="true" keyProperty="id">

+ 7 - 0
ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysDeptMapper.java

@@ -115,4 +115,11 @@ public interface SysDeptMapper {
      * @return 结果
      */
     public int deleteDeptById(Long deptId);
+
+    /**
+     *  根据名称查询部门信息
+     * @param deptName  部门名称
+     * @return  结果
+     */
+    public SysDept selectDeptByDeptName(String deptName);
 }

+ 14 - 0
ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserMapper.java

@@ -162,4 +162,18 @@ public interface SysUserMapper {
      * @return  结果
      */
     public SysUser selectUserByUnionId(String unionId);
+
+    /**
+     *  查询账户或者手机号是否存在用户表中
+     * @param phonenumber   手机号
+     * @return
+     */
+    public int selectUserByUserNameOrTel(String phonenumber);
+
+    /**
+     *  根据手机号查询用户信息
+     * @param phonenumber   手机号
+     * @return  结果
+     */
+    public SysUser selectUserByPhonenumber(String phonenumber);
 }

+ 2 - 3
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java

@@ -531,10 +531,9 @@ public class SysUserServiceImpl implements ISysUserService {
                 userMapper.updateUserRelatedNo(user);
             }
         } else {
+            sysUser.setStatus("1");
             sysUser.setUserName("暂存");
             sysUser.setNickName("暂存");
-            sysUser.setStatus("1");
-            System.out.println("啥都没做需要新增:" + sysUser.toString());
             userMapper.insertUser(sysUser);
         }
     }
@@ -591,7 +590,7 @@ public class SysUserServiceImpl implements ISysUserService {
             return loginUser;
         } else {
             // 没有创建 则创建临时性用户数据
-            user.setNickName(" ");
+            user.setNickName(user.getPhonenumber());
             user.setUserName(user.getPhonenumber());
             user.setStatus("1");
             user.setUserType("11");

+ 5 - 0
ruoyi-system/src/main/resources/mapper/system/SysDeptMapper.xml

@@ -83,6 +83,11 @@
         where dept_name=#{deptName} and parent_id = #{parentId} limit 1
     </select>
 
+    <select id="selectDeptByDeptName" resultType="SysDept" resultMap="SysDeptResult">
+        select dept_id, parent_id, ancestors, dept_name, status
+        from sys_dept where dept_name = #{deptName} and status = '0'
+    </select>
+
     <insert id="insertDept" parameterType="SysDept">
         insert into sys_dept(
         <if test="deptId != null and deptId != 0">dept_id,</if>

+ 16 - 1
ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml

@@ -140,10 +140,20 @@
 	<select id="checkEmailUnique" parameterType="String" resultMap="SysUserResult">
 		select user_id, email from sys_user where email = #{email} limit 1
 	</select>
+
 	<select id="warehouseSelectUserByTel" resultType="com.ruoyi.common.core.domain.entity.SysUser">
 		SELECT user_id, user_name, nick_name, user_type, user_system, phonenumber, open_id, union_id, session_key, del_flag FROM sys_user WHERE phonenumber = #{phonenumber} and user_type = '00'
 	</select>
 
+	<select id="selectUserByUserNameOrTel" parameterType="String" resultType="int">
+		SELECT COUNT(user_id) FROM sys_user where user_name = #{phonenumber} or phonenumber = #{phonenumber}
+	</select>
+
+	<select id="selectUserByPhonenumber" parameterType="String" resultType="com.ruoyi.common.core.domain.entity.SysUser">
+		SELECT user_id, dept_id, user_name, nick_name, email, user_type, user_system, sex, phonenumber, avatar, open_id, union_id, session_key, password
+		img_src, related_no, status, del_flag,login_ip, login_date FROM sys_user where phonenumber = #{phonenumber}
+	</select>
+
 	<insert id="insertUser" parameterType="SysUser" useGeneratedKeys="true" keyProperty="userId">
 		insert into sys_user(
 		<if test="userId != null and userId != 0">user_id,</if>
@@ -252,11 +262,16 @@
  	</delete>
 
 	<delete id="deleteUserByIds" parameterType="Long">
-		update sys_user set del_flag = '2' where user_id in
+		delete from sys_user where user_id in
 		<foreach collection="array" item="userId" open="(" separator="," close=")">
 			#{userId}
 		</foreach>
+<!--		update sys_user set del_flag = '2' where user_id in-->
+<!--		<foreach collection="array" item="userId" open="(" separator="," close=")">-->
+<!--			#{userId}-->
+<!--		</foreach>-->
 	</delete>
+
 	<select id="selectUserNameFO" resultType="map">
 		SELECT
 			su.user_id userId,

+ 97 - 13
ruoyi-warehouse/src/main/java/com/ruoyi/basicData/service/impl/TCorpsServiceImpl.java

@@ -9,9 +9,18 @@ import com.ruoyi.basicData.mapper.TCustomerContactMapper;
 import com.ruoyi.basicData.service.ITCorpsService;
 import com.ruoyi.common.constant.UserConstants;
 import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.core.domain.entity.SysDept;
+import com.ruoyi.common.core.domain.entity.SysRole;
+import com.ruoyi.common.core.domain.entity.SysUser;
 import com.ruoyi.common.core.domain.model.LoginUser;
 import com.ruoyi.common.utils.DateUtils;
+import com.ruoyi.common.utils.SecurityUtils;
 import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.system.domain.SysUserRole;
+import com.ruoyi.system.mapper.SysDeptMapper;
+import com.ruoyi.system.mapper.SysRoleMapper;
+import com.ruoyi.system.mapper.SysUserMapper;
+import com.ruoyi.system.mapper.SysUserRoleMapper;
 import com.ruoyi.warehouseBusiness.domain.TWarehouseBills;
 import com.ruoyi.warehouseBusiness.mapper.TWarehouseBillsMapper;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -33,6 +42,18 @@ public class TCorpsServiceImpl implements ITCorpsService {
     private TCorpsMapper tCorpsMapper;
 
     @Autowired
+    private SysRoleMapper roleMapper;
+
+    @Autowired
+    private SysDeptMapper sysDeptMapper;
+
+    @Autowired
+    private SysUserMapper sysUserMapper;
+
+    @Autowired
+    private SysUserRoleMapper userRoleMapper;
+
+    @Autowired
     private TCustomerContactMapper tCustomerContactMapper;
 
     @Autowired
@@ -110,22 +131,18 @@ public class TCorpsServiceImpl implements ITCorpsService {
         if (StringUtils.isEmpty(tCorps)) {
             return AjaxResult.error("提交失败:客户信息为空");
         }
-        if (StringUtils.isEmpty(tCustomerContacts)) {
-            return AjaxResult.error("提交失败:客户联系人为空");
-        }
         Long fPid = null;
+        SysUser user = loginUser.getUser();
         TCorps corps = JSONArray.parseObject(tCorps, TCorps.class);
-        JSONArray jsonArray = JSONArray.parseArray(tCustomerContacts);
-        List<TCustomerContact> customerContactList = JSONObject.parseArray(jsonArray.toJSONString(), TCustomerContact.class);
         if (StringUtils.isNull(corps.getfId())) {
-            corps.setCreateBy(loginUser.getUser().getUserName());
+            corps.setCreateBy(user.getUserName());
             corps.setCreateTime(new Date());
             corps.setfStatus("0");
             tCorpsMapper.insertTCorps(corps);
             fPid=corps.getfId();
         } else {
             fPid=corps.getfId();
-            corps.setUpdateBy(loginUser.getUser().getUserName());
+            corps.setUpdateBy(user.getUserName());
             corps.setUpdateTime(new Date());
             if(corps.getfStatus().equals("1")){
                 TWarehouseBills tWarehouseBill =new TWarehouseBills();
@@ -138,12 +155,79 @@ public class TCorpsServiceImpl implements ITCorpsService {
             tCorpsMapper.updateTCorps(corps);
             tCustomerContactMapper.deleteCustomerContactByCorps(fPid);
         }
-        for (TCustomerContact cc : customerContactList) {
-            cc.setfPid(fPid);
-            cc.setfStatus("0");
-            cc.setCreateBy(loginUser.getUser().getUserName());
-            cc.setCreateTime(new Date());
-            tCustomerContactMapper.insertTCustomerContact(cc);
+        if (StringUtils.isNotEmpty(tCustomerContacts) && !"[]".equals(tCustomerContacts)) {
+            int line = 0;
+            SysDept dept = sysDeptMapper.selectDeptByDeptName("外部用户");
+            if (StringUtils.isNull(dept)) {
+                TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+                return AjaxResult.error("未找到部门信息,请添加后再提交");
+            }
+            JSONArray jsonArray = JSONArray.parseArray(tCustomerContacts);
+            List<TCustomerContact> customerContactList = JSONObject.parseArray(jsonArray.toJSONString(), TCustomerContact.class);
+            for (TCustomerContact cc : customerContactList) {
+                line++;
+                if (StringUtils.isEmpty(cc.getfName())) {
+                    TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+                    return AjaxResult.error("联系人第" + line + "行,缺少客户名称");
+                }
+                if (StringUtils.isEmpty(cc.getfTel())) {
+                    TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+                    return AjaxResult.error("联系人第" + line + "行,缺少客户手机号");
+                }
+                if (StringUtils.isEmpty(cc.getfStatus())) {
+                    TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+                    return AjaxResult.error("联系人第" + line + "行,缺少客户状态");
+                }
+                if (StringUtils.isNull(cc.gettId())) {
+                    if (sysUserMapper.selectUserByUserNameOrTel(cc.getfTel()) > 0) {
+                        TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+                        return AjaxResult.error("联系人第" + line + "行,手机号已被使用");
+                    }
+                    // 创建客户 登录账户
+                    SysUser sysUser = new SysUser();
+                    sysUser.setUserType("33");
+                    sysUser.setUserSystem("2");
+                    sysUser.setCreateTime(new Date());
+                    sysUser.setUserName(cc.getfTel());
+                    sysUser.setStatus(cc.getfStatus());
+                    sysUser.setNickName(cc.getfName());
+                    sysUser.setDeptId(dept.getDeptId());
+                    sysUser.setPhonenumber(cc.getfTel());
+                    sysUser.setCreateBy(user.getUserName());
+                    sysUser.setPassword(SecurityUtils.encryptPassword(cc.getfTel()));
+                    sysUserMapper.insertUser(sysUser);
+                    // 新增用户与角色管理
+                    // 查询是否存在车队 角色
+                    SysRole role = roleMapper.selectRoleByName("外部用户");
+                    if (StringUtils.isNull(role)) {
+                        TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+                        return AjaxResult.error("未找到司机角色,请创建司机角色后提交");
+                    }
+                    // 创建用户与角色关联
+                    List<SysUserRole> list = new ArrayList<SysUserRole>();
+                    SysUserRole sysUserRole = new SysUserRole();
+                    sysUserRole.setRoleId(role.getRoleId());
+                    sysUserRole.setUserId(sysUser.getUserId());
+                    list.add(sysUserRole);
+                    userRoleMapper.batchUserRole(list);
+                } else {
+                    SysUser use = sysUserMapper.selectUserByPhonenumber(cc.getfTel());
+                    if (StringUtils.isNull(use)) {
+                        TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+                        return AjaxResult.error("该手机号未找到用户信息,请确认操作用户信息是否被删除");
+                    }
+                    use.setDeptId(dept.getDeptId());
+                    use.setStatus(cc.getfStatus());
+                    use.setUpdateTime(new Date());
+                    use.setUpdateBy(user.getUserName());
+                    sysUserMapper.updateUser(user);
+                }
+                cc.setfPid(fPid);
+                cc.setfStatus("0");
+                cc.setCreateTime(new Date());
+                cc.setCreateBy(user.getUserName());
+                tCustomerContactMapper.insertTCustomerContact(cc);
+            }
         }
         return AjaxResult.success();
     }

+ 1 - 2
ruoyi-warehouse/src/main/resources/mapper/basicData/TCorpsMapper.xml

@@ -156,8 +156,7 @@
             t_corps c
             LEFT JOIN F_TMSORDERBILLSCARS car ON car.driver_tel = c.f_tel
         <where>
-            c.f_typeid != '[\"102\"]'
-            and c.f_status = '0'
+            c.f_status = '0'
             <if test="fName != null  and fName != ''"> and c.f_name like concat('%', #{fName}, '%')</if>
         </where>
     </select>