| | |
| | | import com.ruoyi.approve.bean.vo.ApproveProcessVO; |
| | | import com.ruoyi.approve.pojo.ApproveProcess; |
| | | import com.ruoyi.approve.service.IApproveProcessService; |
| | | import com.ruoyi.common.utils.SecurityUtils; |
| | | import com.ruoyi.common.utils.poi.ExcelUtil; |
| | | import com.ruoyi.framework.security.LoginUser; |
| | | import com.ruoyi.framework.web.domain.AjaxResult; |
| | | import com.ruoyi.project.system.domain.SysDept; |
| | | import com.ruoyi.project.system.service.ISysDeptService; |
| | |
| | | */ |
| | | @GetMapping("/getDept") |
| | | public AjaxResult getDept() { |
| | | List<SysDept> sysDeptList =sysDeptService.selectDeptList(new SysDept()); |
| | | Long userId = SecurityUtils.getUserId(); |
| | | LoginUser user = SecurityUtils.getLoginUser(); |
| | | Long[] deptIds = SecurityUtils.getDeptId(); |
| | | |
| | | List<SysDept> sysDeptList = approveProcessService.selectDeptListByDeptIds(deptIds); |
| | | return AjaxResult.success(sysDeptList); |
| | | } |
| | | |
| | |
| | | List<Long> nodeIds = list.stream() |
| | | .map(ApproveProcessConfigNodeVo::getApproverId) |
| | | .collect(Collectors.toList()); |
| | | if (nodeIds.isEmpty()) throw new RuntimeException("添加审批节点和人员"); |
| | | List<SysUser> sysUsers = sysUserMapper.selectUserByIds(nodeIds); |
| | | if (CollectionUtils.isEmpty(sysUsers)) throw new RuntimeException("审核用户不存在"); |
| | | if (sysDept == null) throw new RuntimeException("部门不存在"); |
| | |
| | | @ApiModelProperty("报修内容") |
| | | private String remark; |
| | | |
| | | @ApiModelProperty("报修项目") |
| | | private String repairProject; |
| | | |
| | | @ApiModelProperty("维修人") |
| | | private String maintenanceName; |
| | | |
| | |
| | | @ApiModelProperty("报修内容") |
| | | private String remark; |
| | | |
| | | @ApiModelProperty("报修项目") |
| | | private String repairProject; |
| | | |
| | | @ApiModelProperty("维修人") |
| | | private String maintenanceName; |
| | | |
| | |
| | | @Excel(name = "报废数量") |
| | | private BigDecimal scrapQty = BigDecimal.ZERO; |
| | | |
| | | /** |
| | | * 补产数量 |
| | | */ |
| | | @Excel(name = "补产数量") |
| | | private BigDecimal replenishQty; |
| | | |
| | | /** |
| | | * 加放数 |
| | | */ |
| | | @Excel(name = "加放数") |
| | | private BigDecimal addQty; |
| | | |
| | | //产品名称 |
| | | @Excel(name = "产品名称") |
| | | private String productName; |
| | |
| | | |
| | | private List<Team> teamList; |
| | | |
| | | /** |
| | | * 补产数量 |
| | | */ |
| | | private BigDecimal replenishQty; |
| | | |
| | | |
| | | |
| | | |
| | | @Data |
| | | @AllArgsConstructor |
| | |
| | | @TableField(value = "replenish_qty") |
| | | private BigDecimal replenishQty; |
| | | |
| | | /** |
| | | * 加放数 |
| | | */ |
| | | @TableField(value = "add_qty") |
| | | private BigDecimal addQty; |
| | | |
| | | } |
| | |
| | | productionProductOutput.setQuantity(dto.getQuantity() != null ? dto.getQuantity() : BigDecimal.ZERO); |
| | | productionProductOutput.setScrapQty(dto.getScrapQty() != null ? dto.getScrapQty() : BigDecimal.ZERO); |
| | | productionProductOutput.setReplenishQty(dto.getReplenishQty()); |
| | | productionProductOutput.setAddQty(dto.getAddQty() != null ? dto.getAddQty() : BigDecimal.ZERO); |
| | | productionProductOutputMapper.insert(productionProductOutput); |
| | | //合格数量=报工数量-报废数量 |
| | | BigDecimal productQty = productionProductOutput.getQuantity().subtract(productionProductOutput.getScrapQty()); |
| | |
| | | if (ObjectUtils.isNull(productWorkOrder.getActualStartTime())) { |
| | | productWorkOrder.setActualStartTime(LocalDate.now());//实际开始时间 |
| | | } |
| | | if (productWorkOrder.getCompleteQuantity().compareTo(productWorkOrder.getPlanQuantity()) == 0) { |
| | | if (productWorkOrder.getCompleteQuantity().compareTo(productWorkOrder.getPlanQuantity()) >= 0) { |
| | | productWorkOrder.setActualEndTime(LocalDate.now());//实际结束时间 |
| | | } |
| | | productWorkOrder.setEndProductTime(now); |
| | |
| | | if (productProcessRouteItem.getDragSort() == productProcessRouteItems.size()) { |
| | | //如果是最后一道工序报工之后生产订单完成数量+ |
| | | productOrder.setCompleteQuantity(productOrder.getCompleteQuantity().add(productQty)); |
| | | if (productOrder.getCompleteQuantity().compareTo(productOrder.getQuantity()) == 0) { |
| | | if (productOrder.getCompleteQuantity().compareTo(productOrder.getQuantity()) >= 0) { |
| | | productOrder.setEndTime(now);//结束时间 |
| | | } |
| | | } |
| | |
| | | @TableField(exist = false)
|
| | | private Long[] roleIds;
|
| | |
|
| | | /** 角色ID字符串(用于SQL拼接接收) */
|
| | | @TableField(exist = false)
|
| | | private String roleIdsStr;
|
| | |
|
| | | /** 岗位组 */
|
| | | @TableField(exist = false)
|
| | | private Long[] postIds;
|
| | |
| | | .append("remark", getRemark())
|
| | | .toString();
|
| | | }
|
| | |
|
| | | public String getRoleIdsStr() {
|
| | | return roleIdsStr;
|
| | | }
|
| | |
|
| | | public void setRoleIdsStr(String roleIdsStr) {
|
| | | this.roleIdsStr = roleIdsStr;
|
| | | }
|
| | | }
|
| | |
| | | package com.ruoyi.project.system.mapper;
|
| | |
|
| | | import java.util.ArrayList;
|
| | | import java.util.List;
|
| | |
|
| | | import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
| | | import com.ruoyi.collaborativeApproval.pojo.MeetingMinutes;
|
| | | import com.ruoyi.project.system.domain.SysUser;
|
| | | import org.apache.ibatis.annotations.Mapper;
|
| | | import org.apache.ibatis.annotations.Param;
|
| | |
|
| | | import com.ruoyi.project.system.domain.SysUser;
|
| | | import org.springframework.beans.PropertyValues;
|
| | | import java.util.List;
|
| | |
|
| | | /**
|
| | | * 用户表 数据层
|
| | |
| | | */
|
| | | public SysUser checkEmailUnique(String email);
|
| | |
|
| | | List<SysUser> selectRegistrantIds(List<Long> registrantIds);
|
| | | List<SysUser> selectRegistrantIds(@Param("registrantIds") List<Long> registrantIds);
|
| | |
|
| | | List<SysUser> selectUsersByIds(@Param("userIds") List<Long> userIds);
|
| | |
|
| | |
| | | @DataScope(deptAlias = "d", userAlias = "u")
|
| | | public List<SysUser> selectUserList(SysUser user)
|
| | | {
|
| | | return userMapper.selectUserList(user);
|
| | | List<SysUser> userList = userMapper.selectUserList(user);
|
| | | // 将角色ID字符串转换为数组
|
| | | userList.forEach(u -> {
|
| | | if (u.getRoleIdsStr() != null && !u.getRoleIdsStr().isEmpty()) {
|
| | | String[] strIds = u.getRoleIdsStr().split(",");
|
| | | Long[] roleIds = new Long[strIds.length];
|
| | | for (int i = 0; i < strIds.length; i++) {
|
| | | roleIds[i] = Long.parseLong(strIds[i]);
|
| | | }
|
| | | u.setRoleIds(roleIds);
|
| | | }
|
| | | });
|
| | | return userList;
|
| | | }
|
| | |
|
| | | /**
|
| | |
| | | */
|
| | | @Override
|
| | | public List<SysUser> userListNoPage(SysUser user) {
|
| | | return userMapper.selectUserList(user);
|
| | | List<SysUser> userList = userMapper.selectUserList(user);
|
| | | userList.forEach(u -> {
|
| | | if (u.getRoleIdsStr() != null && !u.getRoleIdsStr().isEmpty()) {
|
| | | String[] strIds = u.getRoleIdsStr().split(",");
|
| | | Long[] roleIds = new Long[strIds.length];
|
| | | for (int i = 0; i < strIds.length; i++) {
|
| | | roleIds[i] = Long.parseLong(strIds[i]);
|
| | | }
|
| | | u.setRoleIds(roleIds);
|
| | | }
|
| | | });
|
| | | return userList;
|
| | | }
|
| | |
|
| | | /**
|
| | |
| | | dr.repair_time, |
| | | dr.repair_name, |
| | | dr.remark, |
| | | dr.repair_project, |
| | | dr.maintenance_name, |
| | | dr.maintenance_time, |
| | | dr.maintenance_result, |
| | |
| | | <if test="deviceRepairDto.remark != null"> |
| | | and dr.remark like concat('%',#{deviceRepairDto.remark},'%') |
| | | </if> |
| | | <if test="deviceRepairDto.repairProject != null"> |
| | | and dr.repair_project like concat('%',#{deviceRepairDto.repairProject},'%') |
| | | </if> |
| | | <if test="deviceRepairDto.maintenanceName != null"> |
| | | and dr.maintenance_name like concat('%',#{deviceRepairDto.maintenanceName},'%') |
| | | </if> |
| | |
| | | dr.repair_time, |
| | | dr.repair_name, |
| | | dr.remark, |
| | | dr.repair_project, |
| | | dr.maintenance_name, |
| | | dr.maintenance_time, |
| | | dr.maintenance_result, |
| | |
| | | END AS work_order_type, |
| | | pp.device_name, |
| | | pp.user_ids as process_user_ids, |
| | | t7.model as final_product_model |
| | | t8.product_name as final_product_model |
| | | FROM |
| | | product_work_order pwo |
| | | LEFT JOIN product_process_route_item ppri ON ppri.id = pwo.product_process_route_item_id |
| | |
| | | LEFT JOIN product_model pm ON pm.id = ppri.product_model_id |
| | | LEFT JOIN product p ON p.id = pm.product_id |
| | | left join product_model t7 on t7.id = po.product_model_id |
| | | left join product as t8 on t7.product_id = t8.id |
| | | <where> |
| | | <if test="c.workOrderNo != null and c.workOrderNo != ''"> |
| | | pwo.work_order_no like concat('%', #{c.workOrderNo}, '%') |
| | |
| | | pm.model as productModelName, |
| | | ppo.quantity, |
| | | ppo.scrap_qty, |
| | | ppo.add_qty, |
| | | pm.unit, |
| | | sl.sales_contract_no salesContractNo |
| | | from |
| | |
| | | IFNULL( |
| | | TIMESTAMPDIFF(MINUTE, ppm.start_time, ppm.end_time), |
| | | 0 |
| | | ) AS work_minutes |
| | | ) AS work_minutes, |
| | | ppo.add_qty, |
| | | ppo.scrap_qty, |
| | | ppo.replenish_qty |
| | | FROM |
| | | production_product_main ppm |
| | | LEFT JOIN sales_ledger_production_accounting slpa ON slpa.product_main_id = ppm.id |
| | |
| | | FROM |
| | | sales_ledger_production_accounting t4 |
| | | LEFT JOIN sales_ledger T1 ON T1.id = t4.sales_ledger_id |
| | | left join sales_ledger_product t3 on t4.sales_ledger_product_id = t3.id and slp.type = 1 |
| | | left join sales_ledger_product t3 on t4.sales_ledger_product_id = t3.id and t3.type = 1 |
| | | <where> |
| | | t3.type = 1 |
| | | <if test="salesLedgerDto.schedulingUserName != null and salesLedgerDto.schedulingUserName != '' "> |
| | |
| | | <result property="remark" column="remark" /> |
| | | <result property="deptNames" column="dept_names" /> |
| | | <result property="tenantId" column="tenant_id" /> |
| | | <result property="roleIdsStr" column="role_ids_str" /> |
| | | <association property="dept" javaType="com.ruoyi.project.system.domain.SysDept" resultMap="deptResult" /> |
| | | <collection property="roles" javaType="java.util.List" resultMap="RoleResult" /> |
| | | </resultMap> |
| | |
| | | </sql> |
| | | |
| | | <select id="selectUserList" parameterType="com.ruoyi.project.system.domain.SysUser" resultMap="SysUserResult"> |
| | | select u.user_id, u.nick_name, u.user_name, u.email, u.avatar, u.phonenumber, u.sex, u.status, u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark,T2.dept_names from sys_user u |
| | | select u.user_id, u.nick_name, u.user_name, u.email, u.avatar, u.phonenumber, u.sex, u.status, u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark, u.tenant_id, T2.dept_names, T3.role_ids_str from sys_user u |
| | | left join |
| | | ( SELECT T1.user_id,GROUP_CONCAT(T2.dept_name SEPARATOR ', ') AS dept_names |
| | | FROM |
| | |
| | | </where> |
| | | GROUP BY T1.user_id |
| | | ) T2 on T2.user_id = u.user_id |
| | | left join |
| | | ( SELECT ur.user_id, GROUP_CONCAT(ur.role_id) AS role_ids_str |
| | | FROM sys_user_role ur |
| | | GROUP BY ur.user_id |
| | | ) T3 on T3.user_id = u.user_id |
| | | where u.del_flag = '0' |
| | | <if test="userId != null and userId != 0"> |
| | | AND u.user_id = #{userId} |
| | |
| | | </select> |
| | | <select id="selectUserByIds" resultType="com.ruoyi.project.system.domain.SysUser"> |
| | | <include refid="selectUserVo"/> |
| | | where u.user_id in <foreach collection="userIds" item="item" open="(" separator="," close=")"> |
| | | #{item} |
| | | </foreach> |
| | | and u.del_flag = '0' |
| | | <where> |
| | | u.del_flag = '0' |
| | | <if test="userIds != null and userIds.size() > 0"> |
| | | and u.user_id in <foreach collection="userIds" item="item" open="(" separator="," close=")"> |
| | | #{item} |
| | | </foreach> |
| | | </if> |
| | | </where> |
| | | </select> |
| | | <select id="selectRegistrantIds" resultType="com.ruoyi.project.system.domain.SysUser"> |
| | | SELECT user_id, nick_name FROM sys_user |
| | | <where> |
| | | <if test="list != null and list.size() > 0"> |
| | | <if test="registrantIds != null and registrantIds.size() > 0"> |
| | | user_id IN |
| | | <foreach item="id" collection="list" open="(" separator="," close=")"> |
| | | <foreach item="id" collection="registrantIds" open="(" separator="," close=")"> |
| | | #{id} |
| | | </foreach> |
| | | </if> |
| | | <if test="list == null or list.size() == 0"> |
| | | <if test="registrantIds == null or registrantIds.size() == 0"> |
| | | 1=0 <!-- 空列表时返回空结果 --> |
| | | </if> |
| | | </where> |