From 2fcd97552d16718cc7997629fd637a73a5a4483f Mon Sep 17 00:00:00 2001
From: 郑永安 <zyazyz250@sina.com>
Date: 星期一, 19 六月 2023 14:44:19 +0800
Subject: [PATCH] 删除

---
 src/main/java/com/gk/firework/Service/ServiceImpl/EnterpriseServiceImpl.java | 1566 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 1,566 insertions(+), 0 deletions(-)

diff --git a/src/main/java/com/gk/firework/Service/ServiceImpl/EnterpriseServiceImpl.java b/src/main/java/com/gk/firework/Service/ServiceImpl/EnterpriseServiceImpl.java
new file mode 100644
index 0000000..69b4bd8
--- /dev/null
+++ b/src/main/java/com/gk/firework/Service/ServiceImpl/EnterpriseServiceImpl.java
@@ -0,0 +1,1566 @@
+package com.gk.firework.Service.ServiceImpl;
+
+
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.gk.firework.Domain.*;
+import com.gk.firework.Domain.Enum.*;
+import com.gk.firework.Domain.Exception.BusinessException;
+import com.gk.firework.Domain.Utils.*;
+import com.gk.firework.Domain.Utils.Properties;
+import com.gk.firework.Domain.Vo.EnterpriseExportVo;
+import com.gk.firework.Domain.Vo.EnterpriseVo;
+import com.gk.firework.Mapper.EnterpriseMapper;
+import com.gk.firework.Mapper.HiddenDangerReportMapper;
+import com.gk.firework.Mapper.SaleOrderInfoMapper;
+import com.gk.firework.Service.*;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.*;
+import java.lang.reflect.Field;
+import java.text.SimpleDateFormat;
+import java.util.*;
+import java.util.regex.Pattern;
+
+
+@Service("enterpriseService")
+public class EnterpriseServiceImpl extends ServiceImpl<EnterpriseMapper, Enterprise> implements EnterpriseService {
+
+    @Autowired
+    EnterpriseMapper enterpriseMapper;
+    @Autowired
+    EnterpriseApplyService enterpriseApplyService;
+    @Autowired
+    EnterpriseService enterpriseService;
+    @Autowired
+    EnterpriseStaffService enterpriseStaffService;
+    @Autowired
+    UserService userService;
+    @Autowired
+    UserRolesService userRolesService;
+    @Autowired
+    RoleService roleService;
+    @Autowired
+    ProductService productService;
+    @Autowired
+    HiddenDangerReportMapper hiddenDangerReportMapper;
+    @Autowired
+    HiddenDangerReportDetailService hiddenDangerReportDetailService;
+    @Autowired
+    ExcelExportService excelExportService;
+    @Autowired
+    SaleOrderInfoMapper saleOrderInfoMapper;
+
+
+    /**
+     * @Description: 新增申请,根据前端提交状态commitStatus来判断增加还是删除 parentId为编辑对象id
+     * @date 2021/3/17 15:57
+     */
+    @Override
+    @Transactional
+    public void addApply(EnterpriseApply enterpriseApply,UserInfo user) throws IllegalAccessException {
+
+        if (enterpriseApply.getCommitstatus() == CommitStatus.MOD) {
+            //新建一个修改给过后的数据
+            Enterprise enp2 = new Enterprise();
+            //ParentId为修改企业的id
+            enp2.setId(enterpriseApply.getParentid());
+            //以下是页面可以修改的值
+            enp2.setSafetysupervision(enterpriseApply.getSafetysupervision());
+            enp2.setEconomicindustry(enterpriseApply.getEconomicindustry());
+            enp2.setEnterprisenumber(enterpriseApply.getEnterprisenumber());
+            enp2.setEnterprisename(enterpriseApply.getEnterprisename());
+            enp2.setEnterpriseemail(enterpriseApply.getEnterpriseemail());
+            enp2.setEnterprisesize(enterpriseApply.getEnterprisesize());
+            enp2.setEnterprisestatus(enterpriseApply.getEnterprisestatus());
+            enp2.setDepartment(enterpriseApply.getDepartment());
+            enp2.setDevicenumber(enterpriseApply.getDevicenumber());
+            enp2.setOfficeaddress(enterpriseApply.getOfficeaddress());
+            enp2.setProvince(enterpriseApply.getProvince());
+            enp2.setCity(enterpriseApply.getCity());
+            enp2.setDistrict(enterpriseApply.getDistrict());
+            enp2.setStreet(enterpriseApply.getStreet());
+            enp2.setCommittee(enterpriseApply.getCommittee());
+            enp2.setSecuritysupervisory(enterpriseApply.getSecuritysupervisory());
+            enp2.setOfficephone(enterpriseApply.getOfficephone());
+            enp2.setFaxphone(enterpriseApply.getFaxphone());
+            enp2.setRegisteraddress(enterpriseApply.getRegisteraddress());
+            enp2.setRegistertype(enterpriseApply.getRegistertype());
+            enp2.setEstablishtime(enterpriseApply.getEstablishtime());
+            enp2.setQqnumber(enterpriseApply.getQqnumber());
+            enp2.setPostcode(enterpriseApply.getPostcode());
+            enp2.setRoomnumber(enterpriseApply.getRoomnumber());
+            enp2.setEconomictype(enterpriseApply.getEconomictype());
+            enp2.setProductioncontent(enterpriseApply.getProductioncontent());
+            enp2.setBusinessregisternumber(enterpriseApply.getBusinessregisternumber());
+            enp2.setOrganizationstructurecode(enterpriseApply.getOrganizationstructurecode());
+            enp2.setValidstarttime(enterpriseApply.getValidstarttime());
+            enp2.setValidendtime(enterpriseApply.getValidendtime());
+            enp2.setEmployeenumber(enterpriseApply.getEmployeenumber());
+            enp2.setIspaysafetyinsurance(enterpriseApply.getIspaysafetyinsurance());
+            enp2.setInsurancecontractnumber(enterpriseApply.getInsurancecontractnumber());
+            enp2.setInsurestarttime(enterpriseApply.getInsurestarttime());
+            enp2.setInsureendtime(enterpriseApply.getInsureendtime());
+            enp2.setIsmajorhazard(enterpriseApply.getIsmajorhazard());
+            enp2.setIsspecialequipment(enterpriseApply.getIsspecialequipment());
+            enp2.setIsoccupationalhealthinfo(enterpriseApply.getIsoccupationalhealthinfo());
+            enp2.setIsspecialpersonnel(enterpriseApply.getIsspecialpersonnel());
+            enp2.setSelfrecordingcycle(enterpriseApply.getSelfrecordingcycle());
+            enp2.setIsparententerprise(enterpriseApply.getIsparententerprise());
+            enp2.setParententerpriseid(enterpriseApply.getParententerpriseid());
+            enp2.setParententerprisename(enterpriseApply.getParententerprisename());
+            //密码
+            enp2.setPassword(enterpriseApply.getPassword());
+
+            Enterprise enp1 = this.getById(enterpriseApply.getParentid());
+            if (enp1 == null) {
+
+            }
+            //以下是非对比内容;设置对比内容相同
+            assert enp1 != null;
+            enp2.setInfocreatetime(enp1.getInfocreatetime());
+            enp2.setInfoupdatetime(enp1.getInfoupdatetime());
+            enp2.setInfoupdateby(enp1.getInfoupdateby());
+            enp2.setInfocreateby(enp1.getInfocreateby());
+            enp2.setValidflag(enp1.getValidflag());
+            enp2.setInfocreatebyname(enp1.getInfocreatebyname());
+            enp2.setInfoupdatebyname(enp1.getInfoupdatebyname());
+
+            //两个对象差
+            String updateFields = compareObj(Enterprise.class, enp1, enp2);
+            //提出时间
+            enterpriseApply.setApplytime(new Date());
+            //等待审批
+            enterpriseApply.setApplystatus(ApplyStatus.APPROVING);
+            enterpriseApply.setValidflag(true);
+            //更新字段
+            enterpriseApply.setUpdatefields(updateFields);
+
+            {
+                enterpriseApply.setSafetysupervision(enp1.getSafetysupervision());
+                enterpriseApply.setEconomicindustry(enp1.getEconomicindustry());
+                enterpriseApply.setEnterprisenumber(enp1.getEnterprisenumber());
+                enterpriseApply.setEnterprisename(enp1.getEnterprisename());
+                enterpriseApply.setEnterpriseemail(enp1.getEnterpriseemail());
+                enterpriseApply.setEnterprisesize(enp1.getEnterprisesize());
+                enterpriseApply.setEnterprisestatus(enp1.getEnterprisestatus());
+                enterpriseApply.setDepartment(enp1.getDepartment());
+                enterpriseApply.setDevicenumber(enp1.getDevicenumber());
+                enterpriseApply.setOfficeaddress(enp1.getOfficeaddress());
+                enterpriseApply.setProvince(enp1.getProvince());
+                enterpriseApply.setCity(enp1.getCity());
+                enterpriseApply.setDistrict(enp1.getDistrict());
+                enterpriseApply.setStreet(enp1.getStreet());
+                enterpriseApply.setCommittee(enp1.getCommittee());
+                enterpriseApply.setSecuritysupervisory(enp1.getSecuritysupervisory());
+                enterpriseApply.setOfficephone(enp1.getOfficephone());
+                enterpriseApply.setFaxphone(enp1.getFaxphone());
+                enterpriseApply.setRegisteraddress(enp1.getRegisteraddress());
+                enterpriseApply.setRegistertype(enp1.getRegistertype());
+                enterpriseApply.setEstablishtime(enp1.getEstablishtime());
+                enterpriseApply.setQqnumber(enp1.getQqnumber());
+                enterpriseApply.setPostcode(enp1.getPostcode());
+                enterpriseApply.setRoomnumber(enp1.getRoomnumber());
+                enterpriseApply.setEconomictype(enp1.getEconomictype());
+                enterpriseApply.setProductioncontent(enp1.getProductioncontent());
+                enterpriseApply.setBusinessregisternumber(enp1.getBusinessregisternumber());
+                enterpriseApply.setOrganizationstructurecode(enp1.getOrganizationstructurecode());
+                enterpriseApply.setValidstarttime(enp1.getValidstarttime());
+                enterpriseApply.setValidendtime(enp1.getValidendtime());
+                enterpriseApply.setEmployeenumber(enp1.getEmployeenumber());
+                enterpriseApply.setIspaysafetyinsurance(enp1.getIspaysafetyinsurance());
+                enterpriseApply.setInsurancecontractnumber(enp1.getInsurancecontractnumber());
+                enterpriseApply.setInsurestarttime(enp1.getInsurestarttime());
+                enterpriseApply.setInsureendtime(enp1.getInsureendtime());
+                enterpriseApply.setIsmajorhazard(enp1.getIsmajorhazard());
+                enterpriseApply.setIsspecialequipment(enp1.getIsspecialequipment());
+                enterpriseApply.setIsoccupationalhealthinfo(enp1.getIsoccupationalhealthinfo());
+                enterpriseApply.setIsspecialpersonnel(enp1.getIsspecialpersonnel());
+                enterpriseApply.setSelfrecordingcycle(enp1.getSelfrecordingcycle());
+                enterpriseApply.setIsparententerprise(enp1.getIsparententerprise());
+                enterpriseApply.setParententerprisename(enp1.getParententerprisename());
+                enterpriseApply.setApplypersonname(user.getUsername());
+                enterpriseApply.setApplypersonid(user.getId());
+                UserInfo userInfo = userService.selectOneByCompanyId(enp1.getId());
+                enterpriseApply.setPassword(userInfo.getPassword());
+            }
+            //新增审批
+            enterpriseApplyService.save(enterpriseApply);
+            //修改企业信息状态
+            Enterprise updateEp = new Enterprise();
+            updateEp.setId(enp1.getId());
+            enterpriseService.updateById(updateEp);
+        }
+
+        if (enterpriseApply.getCommitstatus() == CommitStatus.DEL) {
+
+            //提出时间
+            enterpriseApply.setApplytime(new Date());
+            //等待审批
+            enterpriseApply.setApplystatus(ApplyStatus.APPROVING);
+            Enterprise enp = this.getById(enterpriseApply.getParentid());
+            enterpriseApply.setSafetysupervision(enp.getSafetysupervision());
+            enterpriseApply.setEconomicindustry(enp.getEconomicindustry());
+            enterpriseApply.setEnterprisenumber(enp.getEnterprisenumber());
+            enterpriseApply.setEnterprisename(enp.getEnterprisename());
+            enterpriseApply.setEnterpriseemail(enp.getEnterpriseemail());
+            enterpriseApply.setEnterprisesize(enp.getEnterprisesize());
+            enterpriseApply.setEnterprisestatus(enp.getEnterprisestatus());
+            enterpriseApply.setDepartment(enp.getDepartment());
+            enterpriseApply.setDevicenumber(enp.getDevicenumber());
+            enterpriseApply.setOfficeaddress(enp.getOfficeaddress());
+            enterpriseApply.setProvince(enp.getProvince());
+            enterpriseApply.setCity(enp.getCity());
+            enterpriseApply.setDistrict(enp.getCity());
+            enterpriseApply.setStreet(enp.getStreet());
+            enterpriseApply.setCommittee(enp.getCommittee());
+            enterpriseApply.setSecuritysupervisory(enp.getSecuritysupervisory());
+            enterpriseApply.setOfficephone(enp.getOfficephone());
+            enterpriseApply.setFaxphone(enp.getFaxphone());
+            enterpriseApply.setRegisteraddress(enp.getRegisteraddress());
+            enterpriseApply.setRegistertype(enp.getRegistertype());
+            enterpriseApply.setEstablishtime(enp.getEstablishtime());
+            enterpriseApply.setQqnumber(enp.getQqnumber());
+            enterpriseApply.setPostcode(enp.getPostcode());
+            enterpriseApply.setRoomnumber(enp.getRoomnumber());
+            enterpriseApply.setEconomictype(enp.getEconomictype());
+            enterpriseApply.setProductioncontent(enp.getProductioncontent());
+            enterpriseApply.setBusinessregisternumber(enp.getBusinessregisternumber());
+            enterpriseApply.setOrganizationstructurecode(enp.getOrganizationstructurecode());
+            enterpriseApply.setValidstarttime(enp.getValidstarttime());
+            enterpriseApply.setValidendtime(enp.getValidendtime());
+            enterpriseApply.setEmployeenumber(enp.getEmployeenumber());
+            enterpriseApply.setIspaysafetyinsurance(enp.getIspaysafetyinsurance());
+            enterpriseApply.setInsurancecontractnumber(enp.getInsurancecontractnumber());
+            enterpriseApply.setInsurestarttime(enp.getInsurestarttime());
+            enterpriseApply.setInsureendtime(enp.getInsureendtime());
+            enterpriseApply.setIsmajorhazard(enp.getIsmajorhazard());
+            enterpriseApply.setIsspecialequipment(enp.getIsspecialequipment());
+            enterpriseApply.setIsoccupationalhealthinfo(enp.getIsoccupationalhealthinfo());
+            enterpriseApply.setIsspecialpersonnel(enp.getIsspecialpersonnel());
+            enterpriseApply.setSelfrecordingcycle(enp.getSelfrecordingcycle());
+            enterpriseApply.setIsparententerprise(enp.getIsparententerprise());
+            enterpriseApply.setParententerprisename(enp.getParententerprisename());
+            enterpriseApply.setValidflag(true);
+            enterpriseApply.setApplypersonid(user.getId());
+            enterpriseApply.setApplypersonname(user.getUsername());
+            enterpriseApply.setPassword(enp.getPassword());
+            enterpriseApply.setParententerpriseid(enp.getParententerpriseid());
+            enterpriseApplyService.save(enterpriseApply);
+
+            //修改企业信息状态
+            Enterprise updateEp = new Enterprise();
+            updateEp.setId(enp.getId());
+            enterpriseService.updateById(updateEp);
+
+
+        }
+    }
+
+    /**
+    * @Description: 查询企业信息
+    * @date 2021/3/31 9:31
+    */
+
+    @Override
+    public IPage<Enterprise> selectEnterprise(Page<Enterprise> page, Map filter,UserInfo user) {
+
+        UserInfo userInfo = userService.getById(user.getId());
+        Map<String, Object> params = new HashMap<>();
+        //四类人
+        params.put("leagalrepresentative", Constants.LEGAL_REPRESENTATIVE);
+        params.put("mainprincipal", Constants.MAIN_PRINCIPAL);
+        params.put("securityofficer", Constants.SECURITY_OFFICER);
+        params.put("informationofficer", Constants.INFORMATION_OFFICER);
+
+        //监管部门 根据 地区看所有
+        params.put("province", userInfo.getProvince());
+        params.put("city", userInfo.getCity());
+        params.put("district", userInfo.getArea());
+        params.put("street", userInfo.getTown());
+        params.put("committee", userInfo.getCommunity());
+        //企业用户
+        params.put("enterprisenumber", userInfo.getCompanynumber());
+
+        //过滤条件
+        { //企业类型
+            params.put("safetySupervision", filter.get("safetysupervision"));
+            //经济类型
+            params.put("economicIndustry", filter.get("economicindustry"));
+            //许可证有效|过期
+            params.put("valid", filter.get("valid"));
+            //登录有效 loginvalid 1 就是有效
+            params.put("loginValid",filter.get("loginValid"));
+            //地区
+            params.put("filterProvince", filter.get("province"));
+            params.put("filterCity", filter.get("city"));
+            params.put("filterDistrict", filter.get("district"));
+            params.put("filterStreet", filter.get("street"));
+            params.put("filterCommittee", filter.get("committee"));
+            //企业名称
+            params.put("enterprisename", filter.get("enterprisename"));
+
+        }
+
+        List<Enterprise> list = enterpriseMapper.selectPages(page, params);
+        return page.setRecords(list);
+
+    }
+
+    /**
+    * @Description: 新建企业信息
+    * @date 2021/3/31 10:49
+    */
+    @Override
+    @Transactional
+    public void addEnterprise(Enterprise enterprise,UserInfo userInfo) {
+        UserInfo userInfo2 = userService.getById(userInfo.getId());
+        if (userInfo2.getCompanynumber() != null) {
+            throw new BusinessException("没有新增权限");
+        }
+        //计算安全监管分类个数
+        {
+            int i = countBySafetySupervision(enterprise.getSafetysupervision());
+            enterprise.setDivideflag((byte) (DivideFlagUtil.enterpriseDivideFlagGenerate(i)));
+        }
+
+        //新建企业信息
+        {
+            enterprise.setInfocreatetime(new Date());
+            enterprise.setInfocreateby(userInfo.getId());
+            enterprise.setInfocreatebyname(userInfo.getUsername());
+            enterprise.setInfoupdatetime(new Date());
+            enterprise.setValidflag(true);
+            String randomStr = Element.random(Element.class).getValue().toString()+Element.random(Element.class).getValue().toString();
+            while (enterpriseService.isDuplicate2BitCode(randomStr)) {
+                 randomStr = Element.random(Element.class).getValue().toString()+Element.random(Element.class).getValue().toString();
+            }
+            enterprise.setTwobitcode(randomStr);
+            //执行
+            this.save(enterprise);
+        }
+        //新建企业关联staff
+        {
+            List<EnterpriseStaff> staff = new ArrayList<>();
+            if (enterprise.getLegalrepresentative() != null) {
+                enterprise.getLegalrepresentative().setId(null);
+                enterprise.getLegalrepresentative().setType(Constants.LEGAL_REPRESENTATIVE);
+                enterprise.getLegalrepresentative().setBelongid(enterprise.getId());
+                enterprise.getLegalrepresentative().setBelongname(enterprise.getEnterprisename());
+                staff.add(enterprise.getLegalrepresentative());
+
+            }
+            if (enterprise.getInformationofficer() != null) {
+                enterprise.getInformationofficer().setId(null);
+                enterprise.getInformationofficer().setType(Constants.INFORMATION_OFFICER);
+                enterprise.getInformationofficer().setBelongid(enterprise.getId());
+                enterprise.getInformationofficer().setBelongname(enterprise.getEnterprisename());
+                staff.add(enterprise.getInformationofficer());
+            }
+            if (enterprise.getSecurityofficer() != null) {
+                enterprise.getSecurityofficer().setId(null);
+                enterprise.getSecurityofficer().setType(Constants.SECURITY_OFFICER);
+                enterprise.getSecurityofficer().setBelongid(enterprise.getId());
+                enterprise.getSecurityofficer().setBelongname(enterprise.getEnterprisename());
+                staff.add(enterprise.getSecurityofficer());
+            }
+            if (enterprise.getMainprincipal() != null) {
+                enterprise.getMainprincipal().setId(null);
+                enterprise.getMainprincipal().setType(Constants.MAIN_PRINCIPAL);
+                enterprise.getMainprincipal().setBelongid(enterprise.getId());
+                enterprise.getMainprincipal().setBelongname(enterprise.getEnterprisename());
+                staff.add(enterprise.getMainprincipal());
+            }
+            if (staff.size()>0)
+                enterpriseStaffService.saveBatch(staff);
+
+        }
+
+
+        //保存信息两份到用户表
+        {
+            UserInfo user = new UserInfo();
+            user.setIsdel((byte) 0);
+            user.setUsername(enterprise.getEnterprisename());
+            user.setCompany(enterprise.getEnterprisename());
+            user.setEmail(enterprise.getEnterpriseemail());
+            user.setDepartment(enterprise.getDepartment());
+            user.setIssale((byte) 0);
+            //普通用户
+            user.setType(3);
+            user.setProvince(enterprise.getProvince());
+            user.setPhone(enterprise.getOfficephone());
+            user.setCity(enterprise.getCity());
+            user.setArea(enterprise.getDistrict());
+            user.setTown(enterprise.getStreet());
+            user.setCommunity(enterprise.getCommittee());
+            //提出人为创建人
+            user.setCreatedby(user.getUsername());
+            user.setCompanyid(enterprise.getId());
+            user.setCreateddate(new Date());
+            //设置密码
+            user.setPassword(Base64Encrypt.encode(enterprise.getPassword().getBytes()));
+            user.setCompanynumber(enterprise.getEnterprisenumber());
+            //执行
+            userService.save(user);
+
+            //如果有企业角色设置用户角色为企业
+            UserRolesInfo uri = new UserRolesInfo();
+            uri.setUserid(user.getId());
+            if (enterprise.getSafetysupervision().equals(EnterpriseSafetySupervision.PRODUCE.getMsg())){
+                uri.setRoleid((long) 3);
+            }else {
+                uri.setRoleid((long) 2);
+            }
+            userRolesService.save(uri);
+
+            //终端机
+            user.setId(null);
+            user.setIssale((byte) 1);
+            user.setStatus((byte) 1);
+            Calendar instance = Calendar.getInstance();
+            instance.setTime(enterprise.getValidendtime());
+            instance.set(Calendar.HOUR_OF_DAY, 23);
+            instance.set(Calendar.MINUTE, 59);
+            instance.set(Calendar.SECOND, 59);
+            user.setExpiredate(instance.getTime());
+            userService.save(user);
+            //终端机角色不需要
+
+        }
+
+
+    }
+
+
+    /**
+    * @Description: 修改企业信息
+    * @date 2021/3/31 10:48
+    */
+    @Override
+    @Transactional
+    public void modEnterprise(Enterprise enterprise,UserInfo user) {
+
+        //修改企业信息
+        {
+            enterprise.setInfoupdatetime(new Date());
+            enterprise.setInfoupdateby(user.getId());
+            enterprise.setInfoupdatebyname(user.getUsername());
+            //企业名称和企业编号 不会修改
+            enterprise.setEnterprisenumber(null);
+            enterprise.setEnterprisename(null);
+            this.updateById(enterprise);
+        }
+
+        //修改企业关联staff
+        {
+            ///更新的员工
+            List<EnterpriseStaff> staff = new ArrayList<>();
+            //新增的员工
+            List<EnterpriseStaff> adds = new ArrayList<>();
+            if (enterprise.getSecurityofficer() != null) {
+                if (enterprise.getSecurityofficer().getId() != null) {
+                    enterprise.getSecurityofficer().setBelongname(enterprise.getEnterprisename());
+                    staff.add(enterprise.getSecurityofficer());
+                }else{
+                    enterprise.getSecurityofficer().setType(Constants.SECURITY_OFFICER);
+                    enterprise.getSecurityofficer().setBelongid(enterprise.getId());
+                    enterprise.getSecurityofficer().setBelongname(enterprise.getEnterprisename());
+                    adds.add(enterprise.getSecurityofficer());
+                }
+            }
+            if (enterprise.getLegalrepresentative() != null) {
+                if (enterprise.getLegalrepresentative().getId() != null) {
+                    enterprise.getLegalrepresentative().setBelongname(enterprise.getEnterprisename());
+                    staff.add(enterprise.getLegalrepresentative());
+                }else{
+                    enterprise.getLegalrepresentative().setType(Constants.LEGAL_REPRESENTATIVE);
+                    enterprise.getLegalrepresentative().setBelongid(enterprise.getId());
+                    enterprise.getLegalrepresentative().setBelongname(enterprise.getEnterprisename());
+                    adds.add(enterprise.getLegalrepresentative());
+                }
+
+            }
+            if (enterprise.getMainprincipal() != null) {
+                if (enterprise.getMainprincipal().getId() != null) {
+                    enterprise.getMainprincipal().setBelongname(enterprise.getEnterprisename());
+                    staff.add(enterprise.getMainprincipal());
+                }else{
+                    enterprise.getMainprincipal().setType(Constants.MAIN_PRINCIPAL);
+                    enterprise.getMainprincipal().setBelongid(enterprise.getId());
+                    enterprise.getMainprincipal().setBelongname(enterprise.getEnterprisename());
+                    adds.add(enterprise.getMainprincipal());
+                }
+
+            }
+            if (enterprise.getInformationofficer() != null) {
+                if (enterprise.getInformationofficer().getId() != null) {
+                    enterprise.getInformationofficer().setBelongname(enterprise.getEnterprisename());
+                    staff.add(enterprise.getInformationofficer());
+                }else{
+                    enterprise.getInformationofficer().setType(Constants.INFORMATION_OFFICER);
+                    enterprise.getInformationofficer().setBelongid(enterprise.getId());
+                    enterprise.getInformationofficer().setBelongname(enterprise.getEnterprisename());
+                    adds.add(enterprise.getInformationofficer());
+                }
+            }
+
+            if (staff.size()>0)
+                enterpriseStaffService.updateBatchById(staff);
+            if (adds.size() > 0) {
+                enterpriseStaffService.saveBatch(adds);
+            }
+        }
+
+        //修改人员
+        {
+            //修改用户和终端机
+            List<UserInfo> userList = userService.selectByCompanyId(enterprise.getId(),0);
+            if (userList.size() != 2) {
+                throw new BusinessException("发生错误,请联系管理员");
+            }
+            for (UserInfo info : userList) {
+                if (StringUtils.isNotBlank(enterprise.getPassword())) {
+                    info.setPassword(Base64Encrypt.encode(enterprise.getPassword().getBytes()));
+                }
+                info.setEmail(enterprise.getEnterpriseemail());
+                info.setCompany(enterprise.getEnterprisename());
+                info.setDepartment(enterprise.getDepartment());
+                info.setProvince(enterprise.getProvince());
+                info.setPhone(enterprise.getOfficephone());
+                info.setCity(enterprise.getCity());
+                info.setArea(enterprise.getDistrict());
+                info.setTown(enterprise.getStreet());
+                info.setCommunity(enterprise.getCommittee());
+                //修改许可证 同时修改issale=1的用户有效期
+                if (info.getIssale() == (byte) 1) {
+                    //设置过期时间为选择当日的23:59:59
+                    if (enterprise.getValidendtime() != null) {
+                        Calendar instance = Calendar.getInstance();
+                        instance.setTime(enterprise.getValidendtime());
+                        instance.set(Calendar.HOUR_OF_DAY, 23);
+                        instance.set(Calendar.MINUTE, 59);
+                        instance.set(Calendar.SECOND, 59);
+                        info.setExpiredate(instance.getTime());
+                    }
+                }
+                userService.updateById(info);
+            }
+        }
+
+    }
+
+
+    @Override
+    public int countBySafetySupervision(String safetySupervision) {
+        LambdaQueryWrapper<Enterprise> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(Enterprise::getSafetysupervision, safetySupervision)
+                .eq(Enterprise::getValidflag, true);
+        return enterpriseMapper.selectCount(queryWrapper);
+    }
+
+    @Override
+    public IPage<Enterprise> selectParentEnterprise(Page<Enterprise> page, Map filter) {
+        //重新赋一遍
+        Map<String, Object> params = new HashMap<>();
+        params.put("safetysupervision", filter.get("safetysupervision"));
+        params.put("enterprisename", filter.get("enterprisename"));
+        params.put("province", filter.get("province"));
+        params.put("city", filter.get("city"));
+        params.put("district", filter.get("district"));
+        params.put("street", filter.get("street"));
+        List<Enterprise> list = enterpriseMapper.selectParentPage(page, params);
+        return page.setRecords(list);
+    }
+
+    @Override
+    @Transactional
+    public void delEnterprise(Long id, UserInfo user) {
+
+        UserInfo userInfo = userService.getById(user.getId());
+        Integer type = userInfo.getType();
+        if (type != 1 && type != 2) {
+            throw new BusinessException("没有权限删除");
+        }
+        //企业信息删除
+        Enterprise enterprise = this.getById(id);
+        if (enterprise == null) {
+            throw new BusinessException("企业信息发生改变,请联系管理员");
+        }
+        enterprise.setInfoupdatebyname(user.getUsername());
+        enterprise.setInfoupdatetime(new Date());
+        enterprise.setValidflag(false);
+        this.updateById(enterprise);
+        //删除用户
+        userService.deleteOneByCompanyId(id);
+        //根据企业名称去删除所有产品
+        productService.deleteByEnterpriseName(enterprise.getEnterprisename(),user.getUsername());
+
+
+    }
+
+    /**
+     * @Description: 企业信息新增的校验
+     * @date 2021/4/2 16:54
+     */
+    @Override
+    public void checkAddEnterprise(Enterprise enterprise, Boolean flag) {
+        if (StringUtils.isBlank(enterprise.getSafetysupervision())) {
+            throw new BusinessException("安全监管分类不能为空");
+        }
+
+        if (StringUtils.isBlank(enterprise.getEconomicindustry())) {
+            throw new BusinessException("国民经济行业分类不能为空");
+        }
+
+        if (StringUtils.isBlank(enterprise.getDepartment())) {
+            throw new BusinessException("行政主管部门不能为空");
+        }
+
+        if (flag) {
+            if (StringUtils.isBlank(enterprise.getPassword())) {
+                throw new BusinessException("密码不能为空");
+            }
+
+            String PW_PATTERN = "(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])(?=.*[~!@#$%^&*_.]).{8,}";
+            if (!enterprise.getPassword().matches(PW_PATTERN)){
+                throw new BusinessException("密码必须8位以上,并且包含大小写字母、数字、特殊符号三种以上");
+            }
+        }
+
+
+        if (StringUtils.isBlank(enterprise.getEnterprisenumber())) {
+            throw new BusinessException("单位编号不能为空");
+        }
+        //编号格式判断-不能有特殊字符
+        String regEx= "[`~!@#$%^&*()+=|{}':;,\\[\\].<>/?!¥…()—【】‘;:”“’。,、?\\\\]";
+        Pattern p = Pattern.compile(regEx);
+        if (p.matcher(enterprise.getEnterprisenumber()).find()) {
+            throw new BusinessException("单位编号不能包含特殊字符");
+        }
+        //单位编号判断重复
+        if (this.isDuplicateNumber(enterprise.getEnterprisenumber(),enterprise.getId())) {
+            throw new BusinessException("单位编号已经存在");
+        }
+
+        if (StringUtils.isBlank(enterprise.getEnterprisename())) {
+            throw new BusinessException("企业名称不能为空");
+        }
+
+        //单位名称不能重复
+        if (this.isDuplicateEnterpriseName(enterprise.getEnterprisename(), enterprise.getId())) {
+            throw new BusinessException("企业名称已经存在");
+        }
+
+        if (!enterprise.getSafetysupervision().contains("长期") && StringUtils.isBlank(enterprise.getRegisteraddress())) {
+            throw new BusinessException("单位注册地址不能为空");
+        }
+
+        if (!enterprise.getSafetysupervision().contains("短期") && StringUtils.isBlank(enterprise.getOfficeaddress())) {
+            throw new BusinessException("单位办公地址不能为空");
+        }
+
+        if (StringUtils.isBlank(enterprise.getProvince())) {
+            throw new BusinessException("所属省不能为空");
+        }
+
+        if (StringUtils.isBlank(enterprise.getCity())) {
+            throw new BusinessException("所属市不能为空");
+        }
+
+        if (StringUtils.isBlank(enterprise.getOfficephone())) {
+            throw new BusinessException("办公电话不能为空");
+        }
+
+        if (!enterprise.getSafetysupervision().contains("短期") &&
+                !enterprise.getSafetysupervision().contains("长期") &&
+                StringUtils.isBlank(enterprise.getFaxphone())) {
+            throw new BusinessException("传真电话不能为空");
+        }
+
+        if (StringUtils.isBlank(enterprise.getDistrict())) {
+            throw new BusinessException("所属区不能为空");
+        }
+
+        if (StringUtils.isBlank(enterprise.getBusinessregisternumber())) {
+            throw new BusinessException("工商注册号不能为空");
+        }
+
+        if (StringUtils.isBlank(enterprise.getOrganizationstructurecode())) {
+            throw new BusinessException("组织结构代码不能为空");
+        }
+
+
+        if (StringUtils.isBlank(enterprise.getProductioncontent())) {
+            throw new BusinessException("生产经营项目不能为空");
+        }
+
+        if (enterprise.getEstablishtime() == null) {
+            throw new BusinessException("成立时间不能为空");
+        }
+
+        if (StringUtils.isBlank(enterprise.getInsurancecompany())) {
+            throw new BusinessException("保险公司名称不能为空,没有请填写无");
+        }
+
+        //非临时,有投必填
+        if (!enterprise.getSafetysupervision().contains("临时")) {
+            if (enterprise.getIspaysafetyinsurance()) {
+                if (StringUtils.isBlank(enterprise.getInsurancecontractnumber())) {
+                    throw new BusinessException("保单号不能为空");
+                }
+
+                if (enterprise.getInsureamount() == null) {
+                    throw new BusinessException("投保金额不能为空");
+                }
+
+            }
+        }
+
+        //法定负责人
+        if (enterprise.getLegalrepresentative() != null) {
+
+            if (StringUtils.isBlank(enterprise.getLegalrepresentative().getName())) {
+                throw new BusinessException("法定负责人姓名不能为空");
+            }
+
+            if (StringUtils.isBlank(enterprise.getLegalrepresentative().getPost())) {
+                throw new BusinessException("法定负责人职务不能为空");
+            }
+            if (StringUtils.isBlank(enterprise.getLegalrepresentative().getIdentify())) {
+                throw new BusinessException("法定负责人身份证号不能为空");
+            }
+            if (StringUtils.isBlank(enterprise.getLegalrepresentative().getPhone())) {
+                throw new BusinessException("法定负责人手机号不能为空");
+            }
+            if (StringUtils.isBlank(enterprise.getLegalrepresentative().getOfficephone())) {
+                throw new BusinessException("法定负责人办公室电话不能为空");
+            }
+            if (StringUtils.isBlank(enterprise.getLegalrepresentative().getNumber())) {
+                throw new BusinessException("法定负责人合格证编号不能为空");
+            }
+            if (enterprise.getLegalrepresentative().getValidendtime() == null ||enterprise.getLegalrepresentative().getValidstarttime() == null ) {
+                throw new BusinessException("法定负责人有效期不能为空");
+            }
+
+        }
+
+        //主要负责人
+        if (enterprise.getMainprincipal() != null) {
+            if (StringUtils.isBlank(enterprise.getMainprincipal().getName())) {
+                throw new BusinessException("主要负责人姓名不能为空");
+            }
+
+            if (StringUtils.isBlank(enterprise.getMainprincipal().getPost())) {
+                throw new BusinessException("主要负责人职务不能为空");
+            }
+            if (StringUtils.isBlank(enterprise.getMainprincipal().getPhone())) {
+                throw new BusinessException("主要负责人手机号不能为空");
+            }
+
+            if (StringUtils.isBlank(enterprise.getMainprincipal().getOfficephone())) {
+                throw new BusinessException("主要负责人办公室电话不能为空");
+            }
+            if (StringUtils.isBlank(enterprise.getMainprincipal().getNumber())) {
+                throw new BusinessException("主要负责人合格证编号不能为空");
+            }
+            if (enterprise.getMainprincipal().getValidendtime() == null ||enterprise.getMainprincipal().getValidstarttime() == null ) {
+                throw new BusinessException("主要负责人有效期不能为空");
+            }
+
+        }
+
+    }
+
+    /**
+    * @Description: 企业信息修改的校验
+    * @date 2021/4/6 10:15
+    */
+    @Override
+    public void checkModEnterprise(Enterprise enterprise) {
+
+        if (enterprise.getId() == null) {
+            throw new BusinessException("修改企业信息时发生错误,请联系管理员");
+        }
+
+        Enterprise theOne = this.getById(enterprise.getId());
+        if (theOne == null) {
+            throw new BusinessException("修改企业信息已发生变化,请联系管理员");
+        }
+
+        if (StringUtils.isBlank(enterprise.getSafetysupervision())) {
+            throw new BusinessException("安全监管分类不能为空");
+        }
+
+        assert theOne.getSafetysupervision() != null;
+        if (theOne.getSafetysupervision().equals(enterprise.getSafetysupervision())) {
+            //接下来和新增判断一样
+            this.checkAddEnterprise(enterprise,false);
+        }
+
+    }
+
+    /**
+    * @Description: 判断企业编号是否重复
+    * @date 2021/4/20 16:18
+    */
+    @Override
+    public boolean isDuplicateNumber(String enterpriseNumber, Long id) {
+
+        LambdaQueryWrapper<Enterprise> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(Enterprise::getEnterprisenumber, enterpriseNumber)
+                .eq(Enterprise::getValidflag, true);
+        //修改时:除自己以外是否还有重复
+        if (id != null) {
+            queryWrapper.ne(Enterprise::getId, id);
+        }
+        return enterpriseMapper.selectCount(queryWrapper) > 0;
+    }
+
+    /**
+    * @Description: 判断企业名是否重复
+    * @date 2021/4/20 16:16
+    */
+    @Override
+    public boolean isDuplicateEnterpriseName(String enterpriseName, Long id) {
+        LambdaQueryWrapper<Enterprise> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(Enterprise::getEnterprisename, enterpriseName)
+                .eq(Enterprise::getValidflag, true);
+        //修改时:除自己以外是否还有重复
+        if (id != null) {
+            queryWrapper.ne(Enterprise::getId, id);
+        }
+        return enterpriseMapper.selectCount(queryWrapper) > 0;
+    }
+
+    @Override
+    public List<Long> findEnterpriseIdsByLocation(String province, String city, String district, String street, String committee) {
+        if(province == null || province.isEmpty()){
+            return null;
+        }
+        if(province == null && city == null && district == null && street == null && committee == null){
+            return null;
+        }
+        return enterpriseMapper.selectEnterpriseIdsByLocation(province,city,district,street,committee);
+    }
+
+
+
+    @Override
+    public List<Enterprise> findEnterpriseListByLocation(String province, String city, String district, String street, String committee) {
+        return enterpriseMapper.selectEnterpriseListByLocation(province,city,district,street,committee);
+    }
+
+    /**
+    * @Description: 根据企业单位编号获取企业信息和实名登记和自查自改
+    * @date 2021/4/14 8:25
+    */
+    @Override
+    public Map getEnterpriseDetail(String enterpriseNumber, Integer days, String starttime, String endtime) {
+        if (StringUtils.isBlank(enterpriseNumber)) {
+            throw new BusinessException("企业单位编号为空");
+        }
+        Calendar calendar = new GregorianCalendar();
+        calendar.setTime(new Date());
+        //当前日期往前推days天
+        calendar.add(Calendar.DATE, -days);
+        Date startTime = calendar.getTime();
+        Map<String, Object> map = new HashMap<>();
+        EnterpriseVo enterpriseVo = selctSimpleByNumber(enterpriseNumber);
+        map.put("enterprise", enterpriseVo);
+        //实名登记数量(入库数,销售数)
+        Map registerNumObj = enterpriseMapper.selectInAndOut(enterpriseNumber,startTime);
+        map.put("registerNum", registerNumObj);
+        //自检自查报告
+        List<Map>  reports= hiddenDangerReportMapper.getReportList(enterpriseNumber, startTime);
+        if (reports.size() > 0) {
+            for (Map report : reports) {
+                int overduenum = hiddenDangerReportDetailService.countOverdueByReportCode((String) report.get("code"));
+                //过期并且未处理
+                report.put("overduenum",overduenum);
+            }
+        }
+        map.put("reports", reports);
+
+        Map<String, Object> params = new HashMap<>();
+        params.put("enterprisename", enterpriseVo.getEnterprisename());
+        params.put("starttime", starttime);
+        params.put("endtime", endtime);
+        List<Map> saleRecord =  saleOrderInfoMapper.selectSaleRecord3(params);
+        map.put("saleRecord",saleRecord);
+
+        return map;
+    }
+
+    @Override
+    public EnterpriseVo selctSimpleByNumber(String enterprisenumber) {
+        return enterpriseMapper.selctSimpleByNumber(enterprisenumber);
+    }
+    @Override
+    public Enterprise selectEnterpriseByCompanyId(Long companyid) {
+        LambdaQueryWrapper<Enterprise> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(Enterprise::getId,companyid);
+        return enterpriseMapper.selectOne(queryWrapper);
+    }
+
+    @Override
+    public List<Enterprise> selectProduceEnterprise() {
+        LambdaQueryWrapper<Enterprise> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(Enterprise::getSafetysupervision, EnterpriseSafetySupervision.PRODUCE.getMsg());
+        return enterpriseMapper.selectList(queryWrapper);
+    }
+
+    @Override
+    public List<Enterprise> selectSaleEnterprise() {
+        LambdaQueryWrapper<Enterprise> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.ne(Enterprise::getSafetysupervision, EnterpriseSafetySupervision.PRODUCE.getMsg());
+        queryWrapper.eq(Enterprise::getValidflag,1);
+        queryWrapper.eq(Enterprise::getEnterprisestatus ,"ON");
+        return enterpriseMapper.selectList(queryWrapper);
+    }
+
+    @Override
+    public List<Enterprise> selectSaleEnterprise(Map<String, Object>param) {
+        LambdaQueryWrapper<Enterprise> queryWrapper = new LambdaQueryWrapper<>();
+        if (StringUtils.isNotBlank(param.get("filterProvince").toString())){
+            queryWrapper.eq(Enterprise::getProvince,param.get("filterProvince"));
+        }
+        if (StringUtils.isNotBlank(param.get("filterCity").toString())){
+            queryWrapper.eq(Enterprise::getCity,param.get("filterCity"));
+        }
+
+        if (StringUtils.isNotBlank(param.get("filterDistrict").toString())){
+            queryWrapper.eq(Enterprise::getDistrict,param.get("filterDistrict"));
+        }
+        if (StringUtils.isNotBlank(param.get("filterStreet").toString())){
+            queryWrapper.eq(Enterprise::getStreet,param.get("filterStreet"));
+        }
+        if (StringUtils.isNotBlank(param.get("filterCommittee").toString())){
+            queryWrapper.eq(Enterprise::getCommittee,param.get("filterCommittee"));
+        }
+        if (StringUtils.isNotBlank(param.get("safetysupervision").toString())){
+            queryWrapper.eq(Enterprise::getSafetysupervision,param.get("safetysupervision"));
+        }
+        if (StringUtils.isNotBlank(param.get("parententerprisename").toString())){
+            queryWrapper.like(Enterprise::getParententerprisename,param.get("parententerprisename"));
+        }
+        queryWrapper.ne(Enterprise::getSafetysupervision, EnterpriseSafetySupervision.PRODUCE.getMsg());
+        queryWrapper.eq(Enterprise::getEnterprisestatus, EnterpriseStatus.ON);
+        queryWrapper.eq(Enterprise::getValidflag, true);
+        return enterpriseMapper.selectList(queryWrapper);
+    }
+
+    @Override
+    public List<Enterprise> selectSaleEnterprise(Map<String, Object> param, Page<Enterprise> page) {
+        return enterpriseMapper.selectSaleEnterprise(param,page);
+    }
+
+    @Override
+    public Enterprise selectEnterpriseByNumber(String number) {
+        LambdaQueryWrapper<Enterprise> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(Enterprise::getEnterprisenumber, number)
+         .eq(Enterprise::getValidflag,true);
+        return enterpriseMapper.selectOne(queryWrapper);
+    }
+
+    @Override
+    public List<Map> getAllLocation(String city) {
+        return enterpriseMapper.getAllLocation(city);
+    }
+
+    @Override
+    public List<Map> getRetailStatisticsByArea() {
+        Map<String, Object> params = new HashMap<>();
+        params.put("province", "新疆维吾尔自治区");
+        return enterpriseMapper.getRetailStatisticsByArea(params);
+    }
+
+    /**
+    * @Description: 导出企业信息
+    * @date 2021/4/19 8:51
+    */
+    @Override
+    public List<EnterpriseExportVo> selectExportEnterprise(Map filter, UserInfo user) {
+
+        UserInfo userInfo = userService.getById(user.getId());
+        Map<String, Object> params = new HashMap<>();
+        //监管部门 根据 地区看所有
+        params.put("enterprisenumber", userInfo.getCompanynumber());
+        params.put("province", userInfo.getProvince());
+        params.put("city", userInfo.getCity());
+        params.put("district", userInfo.getArea());
+        params.put("street", userInfo.getTown());
+        params.put("committee", userInfo.getCommunity());
+        //企业用户
+        params.put("companyId", userInfo.getCompanyid());
+
+        //过滤条件
+        { //企业类型
+            params.put("safetySupervision", filter.get("safetysupervision"));
+            //经济类型
+            params.put("economicIndustry", filter.get("economicindustry"));
+            //许可证有效|过期
+            params.put("valid", filter.get("valid"));
+            //地区
+            params.put("filterProvince", filter.get("province"));
+            params.put("filterCity", filter.get("city"));
+            params.put("filterDistrict", filter.get("district"));
+            params.put("filterStreet", filter.get("street"));
+            params.put("filterCommittee", filter.get("committee"));
+            //企业名称
+            params.put("enterprisename", filter.get("enterprisename"));
+
+        }
+        return enterpriseMapper.selectExportEnterprise(params);
+    }
+
+    /**
+    * @Description: 企业信息导入
+    * @date 2021/4/19 9:08
+    */
+    @Override
+    public BooleanReason importEnterprise(MultipartFile file,UserInfo userInfo) {
+
+        UserInfo user = userService.getById(userInfo.getId());
+        if (user.getCompanynumber() != null) {
+            throw new BusinessException("没有导入权限");
+        }
+        if(!FileOptUtils.isDirExists(Properties.filePath)){
+            throw new BusinessException("发生错误或不为目录");
+        }
+
+        if (file == null || file.getSize() == 0) {
+            throw new BusinessException("上传文件或者请求出现问题");
+        }
+
+        if(!FileOptUtils.isDirExists(Properties.filePath)){
+            throw new BusinessException("发生错误或不为目录");
+        }
+
+        SimpleDateFormat sdf = new SimpleDateFormat( "yyyyMMddHHmmssSSS" );
+        String fileSave = Properties.filePath + userInfo.getUsername() + "_" + sdf.format(new Date()) +".xlsx";
+
+        try {
+            file.transferTo(new File(fileSave));
+            InputStream in = new FileInputStream(fileSave);
+            String name = file.getOriginalFilename();
+            assert name != null;
+            Boolean isExcel2007 = name.substring(name.lastIndexOf(".") + 1).endsWith("xlsx");
+            return excelExportService.importEnterpriseExcel(in, userInfo, isExcel2007);
+        } catch (FileNotFoundException e) {
+            e.printStackTrace();
+            throw new BusinessException("找不到文件");
+        } catch (IOException e) {
+            e.printStackTrace();
+            throw new BusinessException("发生错误,请联系管理员");
+        }
+
+
+    }
+
+    @Override
+    public int getSaleNum() {
+        return enterpriseMapper.getSaleNum(Collections.singletonMap("safetysupervision",EnterpriseSafetySupervision.PRODUCE.getMsg()));
+    }
+
+    @Override
+    public List<SaleOrderDetailInfo> getEnterpriseSaleDetail(String enterpriseNumber, String itemcode, String starttime, String endtime) {
+        return saleOrderInfoMapper.getEnterpriseSaleDetail(enterpriseNumber, itemcode, starttime, endtime);
+    }
+
+    @Override
+    public Enterprise selectEnterpriseByName(String name) {
+        LambdaQueryWrapper<Enterprise> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(Enterprise::getEnterprisename, name)
+                    .eq(Enterprise::getValidflag,true);
+        return enterpriseMapper.selectOne(queryWrapper);
+    }
+
+
+    /**
+     * @Description: 停用企业
+     * @date 2021/5/28 15:58
+     */
+    @Override
+    @Transactional
+    public void deactivateEnterprise(Long id,String enterprisenumber, UserInfo user) {
+        Enterprise enterprise = null;
+        if (id == null && StringUtils.isBlank(enterprisenumber))
+            throw new BusinessException("参数传递错误");
+
+        if (id != null)
+            enterprise = this.getById(id);
+
+        if (enterprise == null)
+            enterprise = this.selectEnterpriseByNumber(enterprisenumber);
+
+        if (enterprise == null) {
+            throw new BusinessException("没有该企业");
+        }
+        //1.修改企业状态为 停止
+        this.setEnterpriseStatus(EnterpriseStatus.OFF, enterprise.getId());
+
+        //2.修改企业用户isdel=1     3.修改终端用户isdel=1
+        List<UserInfo> userList = userService.selectByCompanyId(enterprise.getId(),0);
+        if (userList.size() != 2) {
+            throw new BusinessException("发生错误,请联系管理员");
+        }
+        for (UserInfo info : userList) {
+            userService.deleteById(info.getId());
+        }
+
+    }
+
+    @Override
+    @Transactional
+    public void activateEnterprise(Long id,String enterprisenumber, UserInfo user) {
+        Enterprise enterprise = null;
+        if (id == null && StringUtils.isBlank(enterprisenumber))
+            throw new BusinessException("参数传递错误");
+
+        if (id != null)
+            enterprise = this.getById(id);
+
+        if (enterprise == null)
+            enterprise = this.selectEnterpriseByNumber(enterprisenumber);
+
+        if (enterprise == null) {
+            throw new BusinessException("没有该企业");
+        }
+        //1.修改企业状态为 启用
+        this.setEnterpriseStatus(EnterpriseStatus.ON, enterprise.getId());
+        //2.修改企业用户isdel 0
+        //3.修改终端用户isdel 0
+        List<UserInfo> userList = userService.selectByCompanyId(enterprise.getId(),1);
+        if (userList.size() != 2) {
+            throw new BusinessException("发生错误,请联系管理员");
+        }
+        for (UserInfo info : userList) {
+            userService.recoverOneById(info.getId());
+        }
+    }
+
+    @Override
+    public void setEnterpriseStatus(EnterpriseStatus status, Long id) {
+        if (id == null) {
+            throw new BusinessException("参数传递不能为空");
+        }
+        LambdaUpdateWrapper<Enterprise> updateWrapper = new LambdaUpdateWrapper<>();
+        updateWrapper.set(Enterprise::getEnterprisestatus, status)
+                .eq(Enterprise::getId, id);
+        this.update(updateWrapper);
+    }
+
+    @Override
+    public int countAllUndoneEnterprise(UserInfo userInfo) {
+        Map<String, Object> params = new HashMap<>();
+        params.put("province", userInfo.getProvince());
+        params.put("city", userInfo.getCity());
+        params.put("district", userInfo.getArea());
+        params.put("street", userInfo.getTown());
+        params.put("committee", userInfo.getCommunity());
+        return enterpriseMapper.countAllUndoneEnterprise(params);
+    }
+
+    @Override
+    public int countAllEnterpriseExpired(UserInfo userInfo) {
+        Map<String, Object> params = new HashMap<>();
+        params.put("province", userInfo.getProvince());
+        params.put("city", userInfo.getCity());
+        params.put("district", userInfo.getArea());
+        params.put("street", userInfo.getTown());
+        params.put("committee", userInfo.getCommunity());
+        return enterpriseMapper.countAllEnterpriseExpired(params);
+    }
+
+    @Override
+    public void addEnterpriseByRegister(RegisterInfo registerInfo, UserInfo userInfo) {
+        Enterprise enterprise = new Enterprise();
+        enterprise.setSafetysupervision(registerInfo.getType());
+        enterprise.setEnterprisenumber(registerInfo.getEnterprisenumber());
+        enterprise.setEnterprisename(registerInfo.getEnterprisename());
+        enterprise.setProvince(registerInfo.getProvince());
+        enterprise.setCity(registerInfo.getCity());
+        enterprise.setDistrict(registerInfo.getDistrict());
+        enterprise.setStreet(registerInfo.getStreet());
+        enterprise.setCommittee(registerInfo.getCommittee());
+        enterprise.setRegisteraddress(registerInfo.getAddress());
+        enterprise.setPassword(Base64Encrypt.encode(registerInfo.getPassword().getBytes()));
+        int i = enterpriseService.countBySafetySupervision(enterprise.getSafetysupervision());
+        enterprise.setDivideflag((byte) (DivideFlagUtil.enterpriseDivideFlagGenerate(i)));
+        enterprise.setInfocreatebyname(userInfo.getUsername());
+        enterprise.setInfocreateby(userInfo.getId());
+        enterprise.setInfoupdatetime(new Date());
+        enterprise.setValidflag(true);
+
+        enterpriseService.save(enterprise);
+
+        //保存用户
+        UserInfo user = new UserInfo();
+        user.setIsdel((byte) 0);
+        user.setProvince(enterprise.getProvince());
+        user.setCity(enterprise.getCity());
+        user.setArea(enterprise.getDistrict());
+        user.setUsername(enterprise.getEnterprisename());
+        user.setCompany(enterprise.getEnterprisename());
+        user.setIssale((byte) 0);
+        //普通用户
+        user.setType(3);
+        user.setCreatedby(user.getUsername());
+        user.setCompanyid(enterprise.getId());
+        user.setCreateddate(new Date());
+        //设置密码
+        user.setPassword(enterprise.getPassword());
+        user.setCompanynumber(enterprise.getEnterprisenumber());
+        //执行
+        userService.save(user);
+
+        //如果有企业角色设置用户角色为企业
+        UserRolesInfo uri = new UserRolesInfo();
+        uri.setUserid(user.getId());
+        if (enterprise.getSafetysupervision().equals(EnterpriseSafetySupervision.PRODUCE.getMsg())){
+            uri.setRoleid((long) 3);
+        }else {
+            uri.setRoleid((long) 2);
+        }
+        userRolesService.save(uri);
+        //终端机
+        user.setId(null);
+        user.setUsername(enterprise.getEnterprisenumber());
+        user.setIssale((byte) 1);
+        user.setStatus((byte) 1);
+        userService.save(user);
+    }
+
+    @Override
+    public List<Enterprise> selectListUnderSupervision(Integer type,UserInfo userInfo) {
+        List<Enterprise> result = new ArrayList<>();
+        Map<String, Object> params = new HashMap<>();
+        UserInfo user = userService.getById(userInfo);
+        if (StringUtils.isBlank(user.getCompanynumber())) {
+            params.put("province", user.getProvince());
+            params.put("city", user.getCity());
+            params.put("district", user.getArea());
+            params.put("street", user.getTown());
+            params.put("committee", user.getCommunity());
+            params.put("safetysupervision", EnterpriseSafetySupervision.PRODUCE.getMsg());
+            //1生产企业,2销售企业
+            params.put("type", type);
+            result=  enterpriseMapper.selectListUnderSupervision(params);
+        }
+        return result;
+
+    }
+
+    @Override
+    public IPage selectUndoneList(Page<Enterprise> page, Map filter,UserInfo userInfo) {
+        Map<Object, Object> params = new HashMap<>();
+        List<Enterprise> undoneList = null;
+        UserInfo user = userService.getById(userInfo);
+        //可见度
+        if (StringUtils.isBlank(user.getCompanynumber())) {
+            params.put("province", user.getProvince());
+            params.put("city", user.getCity());
+            params.put("district", user.getArea());
+            params.put("street", user.getTown());
+            params.put("committee", user.getCommunity());
+
+            //过滤条件
+            params.put("enterprisename", filter.get("enterprisename"));
+            params.put("filterProvince", filter.get("province"));
+            params.put("filterCity", filter.get("city"));
+            params.put("filterDistrict", filter.get("district"));
+            params.put("filterStreet", filter.get("street"));
+            params.put("filterCommittee", filter.get("committee"));
+            undoneList = enterpriseMapper.selectUndoneList(page,params);
+
+        }
+
+        return page.setRecords(undoneList);
+    }
+
+    @Override
+    public List<Enterprise> selectExportUndoneList(Map filter, UserInfo userInfo) {
+        Map<Object, Object> params = new HashMap<>();
+        List<Enterprise> undoneList = null;
+        UserInfo user = userService.getById(userInfo);
+        //可见度
+        if (StringUtils.isBlank(user.getCompanynumber())) {
+            params.put("province", user.getProvince());
+            params.put("city", user.getCity());
+            params.put("district", user.getArea());
+            params.put("street", user.getTown());
+            params.put("committee", user.getCommunity());
+
+            //过滤条件
+            params.put("enterprisename", filter.get("enterprisename"));
+            params.put("filterProvince", filter.get("province"));
+            params.put("filterCity", filter.get("city"));
+            params.put("filterDistrict", filter.get("district"));
+            params.put("filterStreet", filter.get("street"));
+            params.put("filterCommittee", filter.get("committee"));
+            undoneList = enterpriseMapper.selectUndoneList(params);
+        }
+        return undoneList;
+    }
+
+    @Override
+    public boolean isDuplicate2BitCode(String twoBit) {
+        LambdaQueryWrapper<Enterprise> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(Enterprise::getTwobitcode, twoBit)
+                .eq(Enterprise::getValidflag,true);
+        return enterpriseMapper.selectCount(queryWrapper) > 0;
+    }
+
+    @Override
+    public IPage selectExpiredList(Page<Enterprise> page, Map filter, UserInfo userInfo) {
+        Map<Object, Object> params = new HashMap<>();
+        List<Enterprise> expiredList = null;
+        UserInfo user = userService.getById(userInfo);
+        //可见度
+        if (StringUtils.isBlank(user.getCompanynumber())) {
+            params.put("province", user.getProvince());
+            params.put("city", user.getCity());
+            params.put("district", user.getArea());
+            params.put("street", user.getTown());
+            params.put("committee", user.getCommunity());
+
+            //过滤条件
+            params.put("enterprisename", filter.get("enterprisename"));
+            params.put("filterProvince", filter.get("province"));
+            params.put("filterCity", filter.get("city"));
+            params.put("filterDistrict", filter.get("district"));
+            params.put("filterStreet", filter.get("street"));
+            params.put("filterCommittee", filter.get("committee"));
+            expiredList = enterpriseMapper.selectExpiredList(page,params);
+        }
+        return page.setRecords(expiredList);
+    }
+
+    @Override
+    public List<Enterprise> selectExportExpiredList(Map<String, Object> filter, UserInfo userInfo) {
+        Map<Object, Object> params = new HashMap<>();
+        List<Enterprise> expiredList = null;
+        UserInfo user = userService.getById(userInfo);
+        //可见度
+        if (StringUtils.isBlank(user.getCompanynumber())) {
+            params.put("province", user.getProvince());
+            params.put("city", user.getCity());
+            params.put("district", user.getArea());
+            params.put("street", user.getTown());
+            params.put("committee", user.getCommunity());
+
+            //过滤条件
+            params.put("enterprisename", filter.get("enterprisename"));
+            params.put("filterProvince", filter.get("province"));
+            params.put("filterCity", filter.get("city"));
+            params.put("filterDistrict", filter.get("district"));
+            params.put("filterStreet", filter.get("street"));
+            params.put("filterCommittee", filter.get("committee"));
+            expiredList = enterpriseMapper.selectExpiredList(params);
+        }
+        return expiredList;
+    }
+
+    @Override
+    public List<Enterprise> selectSubEnterprise(Long enterpriseId) {
+
+        Enterprise parent = enterpriseService.getById(enterpriseId);
+        if (parent == null) throw new BusinessException("不存在企业信息");
+        LambdaQueryWrapper<Enterprise> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(Enterprise::getParententerprisename, parent.getEnterprisename())
+                .eq(Enterprise::getValidflag,true)
+                .eq(Enterprise::getEnterprisestatus,EnterpriseStatus.ON);
+        return enterpriseMapper.selectList(queryWrapper);
+    }
+
+    @Override
+    public List<Enterprise> getEnterpriseByLimit(Map<String, Object> condition) {
+        return enterpriseMapper.getEnterpriseByLimit(condition);
+    }
+
+    @Override
+    public Integer getEnterpriseByLimitCount(Map<String, Object> condition) {
+        return enterpriseMapper.getEnterpriseByLimitCount(condition);
+    }
+
+    @Override
+    public BooleanReason importDlCompanyCode(MultipartFile file, UserInfo userInfo) {
+        UserInfo user = userService.getById(userInfo.getId());
+        if (user.getCompanynumber() != null)
+            throw new BusinessException("没有导入权限");
+
+        if (file == null || file.getSize() == 0)
+            throw new BusinessException("上传文件或者请求出现问题");
+
+        try {
+            String name = file.getOriginalFilename();
+            InputStream in = file.getInputStream();
+            assert name != null;
+            boolean isExcel2007 = name.substring(name.lastIndexOf(".") + 1).endsWith("xlsx");
+            return excelExportService.importDLCompanyCodeExcel(in, userInfo, isExcel2007);
+        } catch (BusinessException e) {
+            throw new BusinessException(e.getMessage());
+        } catch (Exception e) {
+            e.printStackTrace();
+            throw new BusinessException("导入失败,请联系管理员");
+        }
+    }
+
+    @Override
+    public List<Enterprise> exportDlCompanyCode() {
+        LambdaQueryWrapper<Enterprise> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper
+                .select(Enterprise::getEnterprisename,
+                        Enterprise::getDlcompanycode,
+                        Enterprise::getDeviceid)
+                .eq(Enterprise::getValidflag, true)
+                .isNotNull(Enterprise::getDlcompanycode);
+        return enterpriseMapper.selectList(queryWrapper);
+    }
+
+    @Override
+    public List<Enterprise> selectAllDlCompanyCodeIsNotNull() {
+        LambdaQueryWrapper<Enterprise> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper
+                .select(Enterprise::getId,
+                        Enterprise::getEnterprisenumber,
+                        Enterprise::getDlcompanycode)
+                .eq(Enterprise::getValidflag,true)
+                .isNull(Enterprise::getDeviceid)
+                .isNotNull(Enterprise::getDlcompanycode);
+
+        return enterpriseMapper.selectList(queryWrapper);
+    }
+
+    @Override
+    public void updateCompanyCode(Enterprise e) {
+        enterpriseMapper.updateCompanyCodeAndSetDeviceIdNull(e);
+    }
+
+    @Override
+    public List<Enterprise> selectSaleEnterpriseForUpload() {
+        LambdaQueryWrapper<Enterprise> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.ne(Enterprise::getSafetysupervision, EnterpriseSafetySupervision.PRODUCE.getMsg());
+        queryWrapper.eq(Enterprise::getValidflag,1);
+        queryWrapper.eq(Enterprise::getEnterprisestatus ,"ON");
+        queryWrapper.isNotNull(Enterprise::getDlcompanycode);
+        queryWrapper.isNotNull(Enterprise::getDeviceid);
+        return enterpriseMapper.selectList(queryWrapper);
+    }
+
+
+    /*
+        判断是否注销 true 注销,flase 正常
+     */
+    @Override
+    public boolean isLogOut(String companynumber) {
+        boolean flag = false;
+        if (StringUtils.isBlank(companynumber)) throw new BusinessException("企业编号为空");
+        LambdaQueryWrapper<Enterprise> queryWrapper = new LambdaQueryWrapper<>();
+        Enterprise enterprise = enterpriseMapper.selectOne(
+                queryWrapper.select(Enterprise::getEnterprisename,Enterprise::getLoginvalidflag)
+                        .eq(Enterprise::getEnterprisenumber, companynumber));
+        if (enterprise == null) throw new BusinessException("企业不存在");
+        if ( enterprise.getLoginvalidflag() != null && !enterprise.getLoginvalidflag()) flag = true;
+        return flag;
+    }
+
+    @Override
+    @Transactional
+    public void logout(List<Long> ids, UserInfo user) {
+        if (user.getType() != 1) throw new BusinessException("没有权限");
+        if (ids == null || ids.size() < 1) throw new BusinessException("参数为空");
+        for (Long id : ids) {
+            enterpriseMapper.updateLoginValidFlag(id,false);
+        }
+
+    }
+
+    @Override
+    public void recoverLogin(Long id, UserInfo user) {
+        if (user.getType() != 1) throw new BusinessException("没有权限");
+        if(id == null) throw new BusinessException("参数为空");
+        enterpriseMapper.updateLoginValidFlag(id,true);
+    }
+
+    @Override
+    @Transactional
+    public void recoverLoginBatch(List<Long> ids, UserInfo user) {
+        if (user.getType() != 1) throw new BusinessException("没有权限");
+        if (ids == null || ids.size() < 1) throw new BusinessException("参数为空");
+        for (Long id : ids) {
+            enterpriseMapper.updateLoginValidFlag(id,true);
+        }
+    }
+
+    @Override
+    public List<Enterprise> selectEnterpriseListByNameLike(String name) {
+        if(name == null || name.isEmpty()){
+            return null;
+        }else {
+            return enterpriseMapper.selectEnterpriseListByNameLike(name);
+        }
+    }
+
+    private String compareObj(Class clazz,Object obj1,Object obj2) throws IllegalAccessException {
+        Class<?> class1 = obj1.getClass();
+        Class<?> class2 = obj2.getClass();
+        Field[] fields = clazz.getDeclaredFields();
+        JSONObject jo = new JSONObject();
+        if (fields.length> 0) {
+            for (Field field : fields) {
+                field.setAccessible(true);
+                String name = field.getName();
+                if (!name.equals("serialVersionUID")&& !name.equals("divideflag")
+                        && !Objects.equals(field.get(obj1),field.get(obj2))) {
+
+                        if (field.get(obj1) != null && field.get(obj2) == null){
+                            jo.put(name, "");
+                        }else{
+                            if (name.equals("legalrepresentative") ||
+                                    name.equals("mainprincipal")||
+                                    name.equals("securityofficer")||
+                                    name.equals("informationofficer")){
+                                String o1 = (String) field.get(obj1);
+                                String o2 = (String) field.get(obj2);
+
+                                JSONObject jsonObject1 = JSONObject.parseObject(o1);
+                                JSONObject jsonObject2 = JSONObject.parseObject(o2);
+                                Map<String, Object> innerMap1 = jsonObject1.getInnerMap();
+                                Map<String, Object> innerMap2 = jsonObject2.getInnerMap();
+                                for (Map.Entry<String, Object> entry : innerMap1.entrySet()) {
+                                    String f = entry.getKey();
+                                    Object value1 = innerMap1.get(f);
+                                    Object value2= innerMap2.get(f);
+                                    if (!Objects.equals(value1, value2)) {
+                                        jo.put(f, value2);
+                                    }
+
+                                }
+                            }
+
+                            jo.put(name, field.get(obj2));
+                        }
+
+
+
+
+
+
+                }
+            }
+        }
+
+        return jo.isEmpty()?null:jo.toJSONString();
+    }
+
+
+}

--
Gitblit v1.9.2