Browse Source

Merge remote-tracking branch 'origin/develop' into develop

‘linchangsheng’ 6 months ago
parent
commit
eaa37fa127

+ 17 - 0
mall-miniapp-service/src/main/java/com/gree/mall/miniapp/bean/worker/WebsitWorkerBean.java

@@ -0,0 +1,17 @@
+package com.gree.mall.miniapp.bean.worker;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+@ApiModel
+public class WebsitWorkerBean {
+
+    @ApiModelProperty(value = "师傅编号")
+    private String workerId;
+
+    @ApiModelProperty(value = "师傅名称")
+    private String workerName;
+
+}

+ 65 - 0
mall-miniapp-service/src/main/java/com/gree/mall/miniapp/controller/worker/WorkerTeamController.java

@@ -0,0 +1,65 @@
+package com.gree.mall.miniapp.controller.worker;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.gree.mall.miniapp.bean.worker.WebsitWorkerBean;
+import com.gree.mall.miniapp.enums.ExamineStatusEnum;
+import com.gree.mall.miniapp.exception.RemoteServiceException;
+import com.gree.mall.miniapp.helper.ResponseHelper;
+import com.gree.mall.miniapp.logic.worker.WorkerTeamLogic;
+import com.gree.mall.miniapp.plus.entity.WorkerTeamApply;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+@Slf4j
+@RestController
+@Api(value = "师傅组别", tags = {"师傅组别"})
+@RequestMapping(value = "/worker/team", produces = "application/json; charset=utf-8")
+public class WorkerTeamController {
+
+    @Resource
+    WorkerTeamLogic workerTeamLogic;
+
+
+    @PostMapping("/page")
+    @ApiOperation(value = "列表")
+    public ResponseHelper<Page<WorkerTeamApply>> page(
+            @ApiParam(value = "页号", required = true) @RequestParam Integer pageNum,
+            @ApiParam(value = "页大小", required = true) @RequestParam Integer pageSize
+
+    ) throws RemoteServiceException {
+        IPage<WorkerTeamApply> page = workerTeamLogic.page(pageNum, pageSize);
+        return ResponseHelper.success(page);
+    }
+
+    @PostMapping("/add")
+    @ApiOperation("新增")
+    public ResponseHelper add(@RequestBody WorkerTeamApply workerTeam) throws RemoteServiceException {
+        workerTeamLogic.add(workerTeam);
+        return ResponseHelper.success();
+    }
+
+    @PostMapping("/confirm")
+    @ApiOperation("确认")
+    public ResponseHelper confirm(
+            @ApiParam(value = "申请id", required = true) @RequestParam String id,
+            @ApiParam(value = "确认状态 OK=同意 FAIL=不同意", required = true) @RequestParam ExamineStatusEnum status) throws RemoteServiceException {
+        workerTeamLogic.confirm(id, status);
+        return ResponseHelper.success();
+    }
+
+    @PostMapping("/query/websit/worker")
+    @ApiOperation("查询网点入驻的师傅")
+    public ResponseHelper<List<WebsitWorkerBean>> queryWebsitWorker (
+            @ApiParam(value = "网点编号", required = true) @RequestParam String websitId
+    ) {
+        List<WebsitWorkerBean> list = workerTeamLogic.queryWebsitWorker(websitId);
+        return ResponseHelper.success(list);
+    }
+}

+ 123 - 0
mall-miniapp-service/src/main/java/com/gree/mall/miniapp/logic/worker/WorkerTeamLogic.java

@@ -0,0 +1,123 @@
+package com.gree.mall.miniapp.logic.worker;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.gree.mall.miniapp.bean.user.CurrentCompanyWechat;
+import com.gree.mall.miniapp.bean.worker.WebsitWorkerBean;
+import com.gree.mall.miniapp.enums.ExamineStatusEnum;
+import com.gree.mall.miniapp.enums.StateEnum;
+import com.gree.mall.miniapp.exception.RemoteServiceException;
+import com.gree.mall.miniapp.logic.common.CommonLogic;
+import com.gree.mall.miniapp.plus.entity.User;
+import com.gree.mall.miniapp.plus.entity.WebsitUser;
+import com.gree.mall.miniapp.plus.entity.WorkerTeam;
+import com.gree.mall.miniapp.plus.entity.WorkerTeamApply;
+import com.gree.mall.miniapp.plus.service.UserService;
+import com.gree.mall.miniapp.plus.service.WebsitUserService;
+import com.gree.mall.miniapp.plus.service.WorkerTeamApplyService;
+import com.gree.mall.miniapp.plus.service.WorkerTeamService;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+@Service
+@Slf4j
+public class WorkerTeamLogic {
+
+    @Resource
+    WorkerTeamService workerTeamService;
+    @Resource
+    WorkerTeamApplyService workerTeamApplyService;
+    @Resource
+    CommonLogic commonLogic;
+    @Resource
+    UserService userService;
+    @Resource
+    WebsitUserService websitUserService;
+
+
+    public IPage<WorkerTeamApply> page(Integer pageNum, Integer pageSize) {
+        CurrentCompanyWechat current = commonLogic.getCurrentCompanyWechat();
+        final Page<WorkerTeamApply> page = workerTeamApplyService.lambdaQuery()
+                .eq(WorkerTeamApply::getCompanyWechatId, current.getUser().getCompanyWechatId())
+                .and(v -> v.eq(WorkerTeamApply::getMasterWorkerId, current.getUser().getWorkerNumber())
+                        .or()
+                        .eq(WorkerTeamApply::getAssistantWorkerId, current.getUser().getWorkerNumber())
+                )
+                .page(new Page<>(pageNum, pageSize));
+        return page;
+    }
+
+    public void add(WorkerTeamApply workerTeam) {
+        CurrentCompanyWechat current = commonLogic.getCurrentCompanyWechat();
+        workerTeam.setCompanyWechatId(current.getUser().getCompanyWechatId())
+                .setCompanyWechatName(current.getUser().getCompanyName());
+        if (StringUtils.isBlank(workerTeam.getWebsitId())) {
+            throw new RemoteServiceException("网点编号不能为空");
+        }
+        if (StringUtils.isBlank(workerTeam.getMasterWorkerId()) || StringUtils.isBlank(workerTeam.getMasterWorkerName())) {
+            workerTeam.setMasterWorkerId(current.getUser().getWorkerNumber())
+                    .setMasterWorkerName(current.getUser().getNickName());
+        }
+        if (StringUtils.isBlank(workerTeam.getAssistantWorkerId()) || StringUtils.isBlank(workerTeam.getAssistantWorkerName())) {
+            throw new RemoteServiceException("组队师傅不能为空");
+        }
+        final Integer count = workerTeamService.lambdaQuery()
+                .eq(WorkerTeam::getWebsitId, workerTeam.getWebsitId())
+                .eq(WorkerTeam::getMasterWorkerId, workerTeam.getMasterWorkerId())
+                .eq(WorkerTeam::getAssistantWorkerId, workerTeam.getAssistantWorkerId())
+                .count();
+        if (count > 0) {
+            throw new RemoteServiceException("已和 " + workerTeam.getAssistantWorkerName() + " 师傅组队");
+        }
+        workerTeam.insert();
+    }
+
+    public void confirm(String id, ExamineStatusEnum status) {
+        CurrentCompanyWechat current = commonLogic.getCurrentCompanyWechat();
+        final WorkerTeamApply apply = workerTeamApplyService.getById(id);
+        if (status.getKey().equals(ExamineStatusEnum.OK.getKey())) {
+            new WorkerTeam()
+                    .setCompanyWechatId(apply.getCompanyWechatId())
+                    .setCompanyWechatName(apply.getCompanyWechatName())
+                    .setWebsitId(apply.getWebsitId())
+                    .setMasterWorkerId(apply.getMasterWorkerId())
+                    .setMasterWorkerName(apply.getMasterWorkerName())
+                    .setAssistantWorkerId(apply.getAssistantWorkerId())
+                    .setAssistantWorkerName(apply.getAssistantWorkerName())
+                    .setStatus(StateEnum.ON.getKey())
+                    .insert();
+        } else {
+            apply.setStatus(status.getKey())
+                    .updateById();
+        }
+    }
+
+    public List<WebsitWorkerBean> queryWebsitWorker(String websitId) {
+        CurrentCompanyWechat current = commonLogic.getCurrentCompanyWechat();
+        final List<WebsitUser> websitUsers = websitUserService.lambdaQuery()
+                .eq(WebsitUser::getCompanyWechatId, current.getUser().getCompanyWechatId())
+                .eq(WebsitUser::getWebsitId, websitId)
+                .eq(WebsitUser::getExamineStatus, ExamineStatusEnum.OK.getKey())
+                .list();
+        final List<User> userList = userService.lambdaQuery()
+                .eq(User::getCompanyWechatId, current.getUser().getCompanyWechatId())
+                .in(User::getUserId, websitUsers.stream().map(WebsitUser::getUserId).collect(Collectors.toList()))
+                .list();
+        final Map<String, String> userMap = userList.stream().collect(Collectors.toMap(User::getWorkerNumber, User::getNickName));
+        List<WebsitWorkerBean> beanList = new ArrayList<>();
+        for (WebsitUser websitUser : websitUsers) {
+            WebsitWorkerBean bean = new WebsitWorkerBean();
+            bean.setWorkerId(websitUser.getWorkerNumber());
+            bean.setWorkerName(userMap.get(websitUser.getWorkerNumber()));
+            beanList.add(bean);
+        }
+        return beanList;
+    }
+}

+ 16 - 0
mall-server-api/src/main/java/com/gree/mall/manager/bean/worker/WebsitWorkerBean.java

@@ -0,0 +1,16 @@
+package com.gree.mall.manager.bean.worker;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@ApiModel
+@Data
+public class WebsitWorkerBean {
+
+    @ApiModelProperty(value = "师傅编号")
+    private String workerId;
+
+    @ApiModelProperty(value = "师傅名称")
+    private String workerName;
+}

+ 1 - 1
mall-server-api/src/main/java/com/gree/mall/manager/controller/admin/AdminUserController.java

@@ -131,7 +131,7 @@ public class AdminUserController {
 
     @PostMapping("/password/reset")
     @ApiOperation("重置密码")
-    public ResponseHelper resetPwd(
+    public ResponseHelper resetPwd (
             @ApiParam(value = "用户id",required = true) @RequestParam(required = true) String adminUserId,
             @ApiParam(value = "密码",required = true) @RequestParam(required = true) String password,
             HttpServletRequest request

+ 1 - 1
mall-server-api/src/main/java/com/gree/mall/manager/controller/contract/WebsitContractSignController.java

@@ -74,7 +74,7 @@ public class WebsitContractSignController {
     @PostMapping("/confirm")
     @ApiOperation(value = "网点合同签约-审核")
     public ResponseHelper confirm(
-            @ApiParam(value = "明细id", required = true) @RequestParam String id,
+            @ApiParam(value = "id", required = true) @RequestParam String id,
             @ApiParam(value = "状态 OK=通过 REJECT=驳回", required = true) @RequestParam SignContractStatusEnum status,
             @ApiParam(value = "备注") @RequestParam(required = false) String remark) {
         websitContractSignLogic.confirm(id, status, remark);

+ 26 - 8
mall-server-api/src/main/java/com/gree/mall/manager/controller/worker/WorkerTeamController.java

@@ -3,7 +3,7 @@ package com.gree.mall.manager.controller.worker;
 import cn.hutool.core.lang.TypeReference;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.gree.mall.manager.annotation.ZfireList;
-import com.gree.mall.manager.bean.admin.AdminWebsitNewBean;
+import com.gree.mall.manager.bean.worker.WebsitWorkerBean;
 import com.gree.mall.manager.bean.worker.WorkerTeamVO;
 import com.gree.mall.manager.exception.RemoteServiceException;
 import com.gree.mall.manager.helper.ResponseHelper;
@@ -13,16 +13,15 @@ import com.gree.mall.manager.zfire.bean.ZfireParamBean;
 import com.gree.mall.manager.zfire.util.FieldUtils;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
 import lombok.extern.slf4j.Slf4j;
-import me.chanjar.weixin.common.error.WxErrorException;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
 
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
+import java.util.List;
 
 @Slf4j
 @RestController
@@ -53,15 +52,34 @@ public class WorkerTeamController {
 
     @PostMapping("/add")
     @ApiOperation("新增")
-    public ResponseHelper add(@RequestBody WorkerTeam workerTeam) throws RemoteServiceException, WxErrorException {
+    public ResponseHelper add(@RequestBody WorkerTeam workerTeam) throws RemoteServiceException {
         workerTeamLogic.add(workerTeam);
         return ResponseHelper.success();
     }
 
     @PostMapping("/update")
     @ApiOperation("修改")
-    public ResponseHelper update(@RequestBody WorkerTeam workerTeam) throws RemoteServiceException, WxErrorException {
+    public ResponseHelper update(@RequestBody WorkerTeam workerTeam) throws RemoteServiceException {
         workerTeamLogic.update(workerTeam);
         return ResponseHelper.success();
     }
+
+    @PostMapping("/query/websit/worker")
+    @ApiOperation("查询网点入驻的师傅")
+    public ResponseHelper<List<WebsitWorkerBean>> queryWebsitWorker (
+            @ApiParam(value = "网点编号", required = true) @RequestParam String websitId,
+            @ApiParam(value = "已选师傅编号") @RequestParam(required = false) String workerId
+    ) {
+        List<WebsitWorkerBean> list = workerTeamLogic.queryWebsitWorker(websitId, workerId);
+        return ResponseHelper.success(list);
+    }
+
+    @PostMapping("/import")
+    @ApiOperation(value = "网点管理-导入(下载模板:师傅组队导入模板.xlsx)")
+    public ResponseHelper<String> importData(
+            @RequestPart("file") MultipartFile file
+    ) throws Exception {
+        workerTeamLogic.importData(file);
+        return ResponseHelper.success();
+    }
 }

+ 43 - 7
mall-server-api/src/main/java/com/gree/mall/manager/logic/admin/AdminUserLogic.java

@@ -148,7 +148,7 @@ public class AdminUserLogic {
 
         adminUserCom.setToken(token);
         //存放到redis
-        redisUtil.set(RedisPrefixEnum.TOKEN_MGR.toString() + adminUserCom.getToken(), adminUserCom, 20 * 60 * 60 * 1000);
+        redisUtil.set(RedisPrefixEnum.TOKEN_MGR + adminUserCom.getToken(), adminUserCom, 20 * 60 * 60 * 1000);
 
         bigLogic.addUserLog(adminUser.getAdminUserId());
 
@@ -162,8 +162,8 @@ public class AdminUserLogic {
      * @param adminUserCom
      */
     private void checkWebsitLevel2(AdminUser adminUser, AdminUserCom adminUserCom) {
+        adminUserCom.setIsJumpSign(false);
         if (CollectionUtil.isNotEmpty(adminUserCom.getAdminWebsitIds()) && adminUserCom.getAdminWebsitIds().size() == 1) {
-            adminUserCom.setIsJumpSign(false);
             final AdminWebsit websit = adminWebsitService.getById(adminUserCom.getAdminWebsitIds().get(0));
             // 二级网点
             if (websit.getLevel() == 2) {
@@ -749,7 +749,7 @@ public class AdminUserLogic {
         if (adminUser.getUserName().equals("admin")) {
             return this.queryAdminModuleTree(null, true, null, null);
         } else {
-            return this.queryAdminModuleTree(adminUser.getRoleId(), false, null, null);
+            return this.queryAdminModuleTree(adminUser.getRoleId(), false, null, adminUser);
         }
     }
 
@@ -861,22 +861,58 @@ public class AdminUserLogic {
         }
         List<AdminModuleTree> parents = trees.stream().filter(v -> v.getLevel() == 1).collect(Collectors.toList());
         for (AdminModuleTree adminModuleTree : parents) {
-            adminModuleTree.setChildren(this.treeModule(trees, adminModuleTree.getModuleId(), hasModule, admin));
+            adminModuleTree.setChildren(this.treeModule(trees, adminModuleTree.getModuleId(), hasModule, admin, false));
         }
+        // 检查用户绑定网点是否为二级网点
+        if (Objects.nonNull(adminUser)) {
+            final List<AdminUserWebsitRela> relas = adminUserWebsitRelaService.lambdaQuery()
+                    .eq(AdminUserWebsitRela::getAdminUserId, adminUser.getAdminUserId())
+                    .list();
+            if (CollectionUtil.isNotEmpty(relas) && relas.size() == 1) {
+                final AdminUserWebsitRela rela = relas.get(0);
+                final AdminWebsit websit = adminWebsitService.lambdaQuery()
+                        .eq(AdminWebsit::getWebsitId, rela.getAdminWebsitId())
+                        .one();
+                if (websit.getLevel() == 2) {
+                    Integer existCount = websitContractSignRecordService.lambdaQuery()
+                            .eq(WebsitContractSignRecord::getWebsitId, websit.getWebsitId())
+                            .eq(WebsitContractSignRecord::getStatus, SignContractStatusEnum.OK.getKey())
+                            .ge(WebsitContractSignRecord::getSignOverTime, DateUtil.formatDateTime(DateUtil.date()))
+                            .count();
+                    // 没有签成功并且审核通过未过期的记录,只有签约菜单
+                    if (existCount == 0 && CollectionUtil.isNotEmpty(trees)) {
+                        List<AdminModuleTree> filterTree = trees.stream().filter(v -> v.getLevel() == 1 && v.getNotSign()).collect(Collectors.toList());
+                        if (CollectionUtil.isNotEmpty(filterTree)) {
+                            for (AdminModuleTree moduleTree : filterTree) {
+                                moduleTree.setChildren(this.treeModule(trees, moduleTree.getModuleId(), hasModule, admin, true));
+                            }
+                            return filterTree;
+                        }
+                    }
+                }
+            }
+        }
+
         return parents;
     }
 
-    private List<AdminModuleTree> treeModule(List<AdminModuleTree> list, String parentId, List<String> hasModule, Boolean admin) {
+    private List<AdminModuleTree> treeModule(List<AdminModuleTree> list, String parentId, List<String> hasModule, Boolean admin, Boolean levelWebsit) {
         //最父级资源树
         if (StringUtils.isBlank(parentId)) {
             return new ArrayList<>();
         }
-        List<AdminModuleTree> collect = list.stream().filter(e -> e.getParentId().equals(parentId)).collect(Collectors.toList());
+        List<AdminModuleTree> collect = null;
+        if (!levelWebsit) {
+            collect = list.stream().filter(e -> e.getParentId().equals(parentId)).collect(Collectors.toList());
+        } else {
+            collect = list.stream().filter(e -> e.getParentId().equals(parentId) && e.getNotSign()).collect(Collectors.toList());
+        }
+
         for (AdminModuleTree bean : collect) {
             if ((hasModule != null && hasModule.contains(bean.getModuleId())) || admin) {
                 bean.setShow(true);
             }
-            bean.setChildren(this.treeModule(list, bean.getModuleId(), hasModule, admin));
+            bean.setChildren(this.treeModule(list, bean.getModuleId(), hasModule, admin, levelWebsit));
         }
         return collect;
     }

+ 13 - 1
mall-server-api/src/main/java/com/gree/mall/manager/logic/contract/CompanyCaAuthLogic.java

@@ -71,7 +71,19 @@ public class CompanyCaAuthLogic {
         }
 
         this.checkInfo(companyCaAuth);
-        companyCaAuth.insert();
+        companyCaAuth.setFadadaCustomerId(null)
+                .setFadadaTransactionNo(null)
+                .setFadadaAuthUrl(null)
+                .setFadadaIsAuth(null)
+                .setFadadaStatus(null)
+                .setFadadaAuditFailReason(null)
+                .setFadadaAuthAutoId(null)
+                .setFadadaAuthAutoContractId(null)
+                .setFadadaAuthAutoStatus(null)
+                .setFadadaAuthAutoUrl(null)
+                .setFadadaAuthAutoViewpdfUrl(null)
+                .setFadadaAuthAutoDownloadUrl(null)
+                .insert();
     }
 
     public void update(CompanyCaAuth companyCaAuth) {

+ 48 - 44
mall-server-api/src/main/java/com/gree/mall/manager/logic/contract/WebsitContractSignLogic.java

@@ -144,7 +144,7 @@ public class WebsitContractSignLogic {
         long companySign = signItems.stream()
                 .filter(v -> v.getNeedCompanySign().equals(IsYesNoEnum.YES.getKey()) && v.getCompanySignStatus().equals(IsYesNoEnum.NO.getKey()))
                 .count();
-        if (!bean.isJump() && companySign > 0) {
+        if (!bean.isJump() && companySign > 0 && websit.getFadadaWebsitRealStatus().equals(IsYesNoEnum.YES.getKey())) {
             // 签约企业签约跳
             this.companySignMethod(websit, item, bean, returnUrl);
         }
@@ -154,7 +154,8 @@ public class WebsitContractSignLogic {
                 .count();
         if (!bean.isJump()
                 && companySign == 0
-                && managerSign > 0) {
+                && managerSign > 0
+                && websit.getFadadaCustomerRealStatus().equals(IsYesNoEnum.YES.getKey())) {
             // 签约负责人签约跳
             this.managerSignMethod(websit, item, bean, returnUrl);
         }
@@ -593,50 +594,53 @@ public class WebsitContractSignLogic {
     @Transactional
     public void confirm(String id, SignContractStatusEnum status, String remark) {
         AdminUserCom adminUser = commonLogic.getAdminUser();
-        WebsitContractSignItem signItem = websitContractSignItemService.getById(id);
-        if (Objects.isNull(signItem)) {
-            throw new RemoteServiceException("合同明细不存在");
+        final WebsitContractSignRecord record = websitContractSignRecordService.getById(id);
+
+        if (Objects.isNull(record)) {
+            throw new RemoteServiceException("合同签约记录不存在");
         }
-        if (status.getKey().equals(SignContractStatusEnum.OK.getKey())) {
-            if (signItem.getNeedPartyASign().equals(IsYesNoEnum.YES.getKey())) {
-                //甲方签署
-                JSONObject object = Auth4FDDUtil.extSignAuto(IdWorker.getIdStr(), signItem.getFadadaContractId(),
-                        signItem.getCaCustomerId(), "甲方签章", "0",
-                        signItem.getPartyASignFiled(), "", "", "");
-                log.info(signItem.getFadadaContractId() + " 甲方签章结果:{}", object);
-
-                // 法大大合同归档
-                JSONObject object1 = Auth4FDDUtil.contractFiling(signItem.getFadadaContractId());
-                log.info(signItem.getFadadaContractId() + " 合同归档结果:{}", object1);
+
+        List<WebsitContractSignItem> signItemList = websitContractSignItemService.lambdaQuery()
+                .eq(WebsitContractSignItem::getWebsitContractSignRecordId, record.getId())
+                .list();
+
+        for (WebsitContractSignItem signItem : signItemList) {
+            if (status.getKey().equals(SignContractStatusEnum.OK.getKey())) {
+                if (signItem.getNeedPartyASign().equals(IsYesNoEnum.YES.getKey())) {
+                    //甲方签署
+                    JSONObject object = Auth4FDDUtil.extSignAuto(IdWorker.getIdStr(), signItem.getFadadaContractId(),
+                            signItem.getCaCustomerId(), "甲方签章", "0",
+                            signItem.getPartyASignFiled(), "", "", "");
+                    log.info(signItem.getFadadaContractId() + " 甲方签章结果:{}", object);
+
+                    // 法大大合同归档
+                    JSONObject object1 = Auth4FDDUtil.contractFiling(signItem.getFadadaContractId());
+                    log.info(signItem.getFadadaContractId() + " 合同归档结果:{}", object1);
+                }
+                websitContractSignItemService.lambdaUpdate()
+                        .set(WebsitContractSignItem::getContractStatus, SignContractStatusEnum.OK.getKey())
+                        .set(WebsitContractSignItem::getConfirmBy, adminUser.getNickName())
+                        .set(WebsitContractSignItem::getConfirmTime, DateUtil.date())
+                        .eq(WebsitContractSignItem::getId, id)
+                        .update();
+            } else {
+                websitContractSignItemService.lambdaUpdate()
+                        .set(WebsitContractSignItem::getContractStatus, SignContractStatusEnum.REJECT.getKey())
+                        .set(WebsitContractSignItem::getConfirmBy, adminUser.getNickName())
+                        .set(WebsitContractSignItem::getConfirmTime, DateUtil.date())
+                        .eq(WebsitContractSignItem::getId, id)
+                        .update();
             }
-            websitContractSignItemService.lambdaUpdate()
-                    .set(WebsitContractSignItem::getContractStatus, SignContractStatusEnum.OK.getKey())
-                    .set(WebsitContractSignItem::getRemark, remark)
-                    .set(WebsitContractSignItem::getConfirmBy, adminUser.getNickName())
-                    .set(WebsitContractSignItem::getConfirmTime, DateUtil.date())
-                    .eq(WebsitContractSignItem::getId, id)
-                    .update();
-        } else {
-            websitContractSignItemService.lambdaUpdate()
-                    .set(WebsitContractSignItem::getContractStatus, SignContractStatusEnum.REJECT.getKey())
-                    .set(WebsitContractSignItem::getRemark, remark)
-                    .set(WebsitContractSignItem::getConfirmBy, adminUser.getNickName())
-                    .set(WebsitContractSignItem::getConfirmTime, DateUtil.date())
-                    .eq(WebsitContractSignItem::getId, id)
-                    .update();
-        }
-        final Integer count = websitContractSignItemService.lambdaQuery()
-                .eq(WebsitContractSignItem::getWebsitContractSignRecordId, signItem.getWebsitContractSignRecordId())
-                .in(WebsitContractSignItem::getContractStatus, SignContractStatusEnum.WAIT_SIGN.getKey(), SignContractStatusEnum.WAIT.getKey(), SignContractStatusEnum.REJECT.getKey())
-                .count();
-        if (count == 0) {
-            // 合同都已审核,更新记录为审核通过
-            websitContractSignRecordService.lambdaUpdate()
-                    .set(WebsitContractSignRecord::getStatus, SignContractStatusEnum.OK.getKey())
-                    .set(WebsitContractSignRecord::getConfirmBy, adminUser.getNickName())
-                    .set(WebsitContractSignRecord::getConfirmTime, DateUtil.date())
-                    .eq(WebsitContractSignRecord::getId, signItem.getWebsitContractSignRecordId())
-                    .update();
         }
+
+        // 合同都已审核,更新记录为审核通过
+        websitContractSignRecordService.lambdaUpdate()
+                .set(WebsitContractSignRecord::getRemark, remark)
+                .set(WebsitContractSignRecord::getStatus, status.getKey())
+                .set(WebsitContractSignRecord::getConfirmBy, adminUser.getNickName())
+                .set(WebsitContractSignRecord::getConfirmTime, DateUtil.date())
+                .eq(WebsitContractSignRecord::getId, id)
+                .update();
+
     }
 }

+ 110 - 0
mall-server-api/src/main/java/com/gree/mall/manager/logic/worker/WorkerTeamLogic.java

@@ -1,20 +1,36 @@
 package com.gree.mall.manager.logic.worker;
 
+import cn.hutool.core.collection.CollectionUtil;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.gree.mall.manager.bean.admin.AdminUserCom;
+import com.gree.mall.manager.bean.worker.WebsitWorkerBean;
 import com.gree.mall.manager.bean.worker.WorkerTeamVO;
 import com.gree.mall.manager.commonmapper.CommonMapper;
+import com.gree.mall.manager.enums.ExamineStatusEnum;
+import com.gree.mall.manager.enums.material.StateEnum;
 import com.gree.mall.manager.exception.RemoteServiceException;
 import com.gree.mall.manager.logic.common.CommonLogic;
+import com.gree.mall.manager.plus.entity.User;
+import com.gree.mall.manager.plus.entity.WebsitUser;
 import com.gree.mall.manager.plus.entity.WorkerTeam;
+import com.gree.mall.manager.plus.service.UserService;
+import com.gree.mall.manager.plus.service.WebsitUserService;
 import com.gree.mall.manager.plus.service.WorkerTeamService;
+import com.gree.mall.manager.utils.CommonUtils;
+import com.gree.mall.manager.utils.excel.ExcelUtils;
 import com.gree.mall.manager.zfire.bean.ZfireParamBean;
 import com.gree.mall.manager.zfire.util.FieldUtils;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.IOException;
+import java.util.*;
+import java.util.stream.Collectors;
 
 @Service
 @Slf4j
@@ -24,6 +40,8 @@ public class WorkerTeamLogic {
     private final CommonLogic commonLogic;
     private final CommonMapper commonMapper;
     private final WorkerTeamService workerTeamService;
+    private final WebsitUserService websitUserService;
+    private final UserService userService;
 
     public IPage<WorkerTeamVO> list(ZfireParamBean zfireParamBean) {
         AdminUserCom adminUser = commonLogic.getAdminUser();
@@ -75,4 +93,96 @@ public class WorkerTeamLogic {
             throw new RemoteServiceException(workerTeam.getWebsitId() + "已存在一组同样师傅的记录" + workerTeam.getAssistantWorkerId() + "," + workerTeam.getAssistantWorkerId());
         }
     }
+
+    public List<WebsitWorkerBean> queryWebsitWorker(String websitId, String workerId) {
+        AdminUserCom adminUser = commonLogic.getAdminUser();
+        final List<WebsitUser> websitUsers = websitUserService.lambdaQuery()
+                .eq(WebsitUser::getCompanyWechatId, adminUser.getCompanyWechatId())
+                .eq(WebsitUser::getWebsitId, websitId)
+                .ne(StringUtils.isNotBlank(workerId), WebsitUser::getWorkerNumber, workerId)
+                .eq(WebsitUser::getExamineStatus, ExamineStatusEnum.OK.getKey())
+                .list();
+        final List<User> userList = userService.lambdaQuery()
+                .eq(User::getCompanyWechatId, adminUser.getCompanyWechatId())
+                .in(User::getUserId, websitUsers.stream().map(WebsitUser::getUserId).collect(Collectors.toList()))
+                .list();
+        final Map<String, String> userMap = userList.stream().collect(Collectors.toMap(User::getWorkerNumber, User::getNickName));
+        List<WebsitWorkerBean> beanList = new ArrayList<>();
+        for (WebsitUser websitUser : websitUsers) {
+            WebsitWorkerBean bean = new WebsitWorkerBean();
+            bean.setWorkerId(websitUser.getWorkerNumber());
+            bean.setWorkerName(userMap.get(websitUser.getWorkerNumber()));
+            beanList.add(bean);
+        }
+        return beanList;
+    }
+
+    @Transactional
+    public void importData(MultipartFile file) throws IOException {
+        AdminUserCom adminUser = commonLogic.getAdminUser();
+
+        String companyWechatId = Objects.nonNull(adminUser.getAdminCompanyWechat()) ? adminUser.getAdminCompanyWechat().getCompanyWechatId() : null;
+        String companyName = Objects.nonNull(adminUser.getAdminCompanyWechat()) ? adminUser.getAdminCompanyWechat().getCompanyName() : null;
+
+        if (org.apache.commons.lang3.StringUtils.isBlank(companyWechatId)) {
+            throw new RemoteServiceException("商户编号缺失,导入中止");
+        }
+
+        List<Object> objects = ExcelUtils.importExcel(file);
+
+        List<WorkerTeam> workerTeamList = new ArrayList<>();
+        for (int i = 0; i < objects.size(); i++) {
+            int rowIndex = i + 2;
+            List<Object> row = (List<Object>) objects.get(i);
+            CommonUtils.initList2(row, 3);
+            if (Objects.isNull(row.get(0)) || org.apache.commons.lang3.StringUtils.isBlank(row.get(0).toString())) {
+                throw new RemoteServiceException("第" + rowIndex + "行, 网点编号不能为空");
+            }
+            if (Objects.isNull(row.get(1)) || org.apache.commons.lang3.StringUtils.isBlank(row.get(1).toString())) {
+                throw new RemoteServiceException("第" + rowIndex + "行, 大工师傅编号不能为空");
+            }
+            if (Objects.isNull(row.get(2)) || org.apache.commons.lang3.StringUtils.isBlank(row.get(2).toString())) {
+                throw new RemoteServiceException("第" + rowIndex + "行, 小工师傅编号不能为空");
+            }
+            WorkerTeam workerTeam = new WorkerTeam();
+            workerTeam.setCompanyWechatId(companyWechatId)
+                    .setCompanyWechatName(companyName)
+                    .setWebsitId(row.get(0).toString().trim())
+                    .setMasterWorkerId(row.get(0).toString().trim())
+                    .setAssistantWorkerId(row.get(0).toString().trim())
+                    .setStatus(StateEnum.ON.getKey());
+            workerTeamList.add(workerTeam);
+        }
+
+        List<User> userList = userService.lambdaQuery()
+                .eq(User::getCompanyWechatId, companyWechatId)
+                .in(User::getWorkerNumber, workerTeamList.stream()
+                        .map(WorkerTeam::getMasterWorkerId)
+                        .collect(Collectors.toList()))
+                .list();
+
+        List<User> userList2 = userService.lambdaQuery()
+                .eq(User::getCompanyWechatId, companyWechatId)
+                .in(User::getWorkerNumber, workerTeamList.stream()
+                        .map(WorkerTeam::getAssistantWorkerId)
+                        .collect(Collectors.toList()))
+                .list();
+
+        userList.addAll(userList2);
+
+        Map<String, String> userMap = new HashMap<>();
+        if (CollectionUtil.isNotEmpty(userList)) {
+            userMap = userList.stream()
+                    .collect(Collectors.toMap(User::getWorkerNumber, User::getNickName, (key1, key2) -> key2));
+        }
+
+        for (WorkerTeam workerTeam : workerTeamList) {
+            String masterWorkerName = userMap.get(workerTeam.getMasterWorkerId());
+            String assistantWorkerName = userMap.get(workerTeam.getAssistantWorkerId());
+            workerTeam.setMasterWorkerName(masterWorkerName)
+                    .setAssistantWorkerName(assistantWorkerName);
+            this.checkUniqueTeam(workerTeam);
+            workerTeam.insert();
+        }
+    }
 }

BIN
mall-server-api/src/main/resources/template/师傅组队导入模板.xlsx