人效管理

liweidong
maxiangong 1 day ago
parent 1066b2e4f5
commit ae27c7843c
  1. 10
      blade-common/src/main/java/org/springblade/common/constant/LauncherConstant.java
  2. 2
      blade-ops/blade-resource/src/main/java/org/springblade/resource/endpoint/OssEndpoint.java
  3. 31
      blade-service/blade-desk/src/main/java/org/springblade/desk/efficiency/controller/BsSalaryCalculationController.java
  4. 217
      blade-service/blade-desk/src/main/java/org/springblade/desk/efficiency/excel/BsSalaryCalculationExcel.java
  5. 4
      blade-service/blade-desk/src/main/java/org/springblade/desk/efficiency/pojo/vo/BsEfficiencyTaskVO.java
  6. 2
      blade-service/blade-desk/src/main/java/org/springblade/desk/efficiency/service/impl/BsEfficiencyTaskServiceImpl.java
  7. 2
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/WorkPlanMapper.java
  8. 133
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/WorkPlanMapper.xml
  9. 2
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IWorkPlanService.java
  10. 5
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/WorkPlanServiceImpl.java

@ -12,7 +12,7 @@ public interface LauncherConstant {
/**
* nacos 命名空间
*/
//String NACOS_NAMESPACE = "feaf627f-a847-463b-8b73-24a0538f526e";
// String NACOS_NAMESPACE = "feaf627f-a847-463b-8b73-24a0538f526e";
// 生产环境
String NACOS_NAMESPACE = "db3f4da1-ae19-4104-8c17-6d9b8f069401";
// 测试环境
@ -151,10 +151,10 @@ public interface LauncherConstant {
return appName.concat(GROUP_NAME);
}
/**
* wms
*/
String APPLICATION_WMS_NAME = "blade-wms";
/**
* wms
*/
String APPLICATION_WMS_NAME = "blade-wms";

@ -272,7 +272,7 @@ public class OssEndpoint {
@IsAdmin
@PostMapping("/remove-file")
public R removeFile(@RequestParam String fileName) {
ossBuilder.template().removeFile(fileName);
ossBuilder.template(TENANT_ID, CODE).removeFile(fileName);
return R.success("操作成功");
}

@ -3,19 +3,29 @@ package org.springblade.desk.efficiency.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.servlet.http.HttpServletResponse;
import lombok.AllArgsConstructor;
import org.springblade.core.excel.util.ExcelUtil;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query;
import org.springblade.core.secure.BladeUser;
import org.springblade.core.secure.annotation.IsAdmin;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.DateUtil;
import org.springblade.desk.efficiency.excel.BsSalaryCalculationExcel;
import org.springblade.desk.efficiency.pojo.dto.BsSalaryCalculationDTO;
import org.springblade.desk.efficiency.pojo.vo.BsSalaryCalculationVO;
import org.springblade.desk.efficiency.pojo.vo.BsSalaryStandardVO;
import org.springblade.desk.produce.service.IWorkOrderService;
import org.springblade.desk.produce.service.IWorkPlanService;
import org.springframework.beans.BeanUtils;
import org.springframework.util.CollectionUtils;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.ArrayList;
import java.util.List;
/**
* 薪资计算 控制器
*
@ -41,4 +51,23 @@ public class BsSalaryCalculationController {
IPage<BsSalaryCalculationVO> pages = workPlanService.selectBsSalaryCalculationPage(Condition.getPage(query), bsSalaryCalculation);
return R.data(pages);
}
/**
* 导出数据
*/
@IsAdmin
@GetMapping("/export")
@Operation(summary = "导出数据", description = "传入bsEnergyMonitor")
public void export(BsSalaryCalculationDTO bsSalaryCalculation, BladeUser bladeUser, HttpServletResponse response) {
List<BsSalaryCalculationVO> list = workPlanService.exportBsSalaryCalculation(bsSalaryCalculation);
List<BsSalaryCalculationExcel> exportList = new ArrayList<>();
if (!CollectionUtils.isEmpty(list)) {
for (BsSalaryCalculationVO bsSalaryCalculationVO : list) {
BsSalaryCalculationExcel bsSalaryCalculationExcel = new BsSalaryCalculationExcel();
BeanUtils.copyProperties(bsSalaryCalculationVO, bsSalaryCalculationExcel);
exportList.add(bsSalaryCalculationExcel);
}
}
ExcelUtil.export(response, "薪资计算" + DateUtil.time(), "薪资计算", exportList, BsSalaryCalculationExcel.class);
}
}

@ -0,0 +1,217 @@
package org.springblade.desk.efficiency.excel;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.write.style.ColumnWidth;
import com.alibaba.excel.annotation.write.style.ContentRowHeight;
import com.alibaba.excel.annotation.write.style.HeadRowHeight;
import lombok.Data;
import java.io.Serializable;
@Data
@ColumnWidth(25)
@HeadRowHeight(20)
@ContentRowHeight(18)
public class BsSalaryCalculationExcel implements Serializable {
/**
* 订单号
*/
@ColumnWidth(20)
@ExcelProperty("车间订单号")
private String woCode;
/**
* 零件号
*/
@ColumnWidth(20)
@ExcelProperty("零件号")
private String partCode;
/**
* 零件名称
*/
@ColumnWidth(20)
@ExcelProperty("零件名称")
private String partName;
/**
* 批次号
*/
@ColumnWidth(20)
@ExcelProperty("批次号")
private String batchNo;
/**
* 使用部门
*/
@ColumnWidth(20)
@ExcelProperty("使用部门")
private String useDept;
/**
* 产品系列
*/
@ColumnWidth(20)
@ExcelProperty("产品型号")
private String productType;
/**
* 镀种
*/
@ColumnWidth(20)
@ExcelProperty("镀种")
private String plate;
/**
* 作业中心
*/
@ColumnWidth(20)
@ExcelProperty("作业中心")
private String wcName;
/**
* 班组
*/
@ColumnWidth(20)
@ExcelProperty("班组")
private String team;
/**
* 工序
*/
@ColumnWidth(20)
@ExcelProperty("工序")
private String ppsName;
/**
* 定额工时
*/
@ColumnWidth(20)
@ExcelProperty("定额工时")
private String hourQuota;
/**
* 准备工时
*/
@ColumnWidth(20)
@ExcelProperty("准备工时")
private String hourPrepar;
/**
* 工时额定单位
*/
@ColumnWidth(20)
@ExcelProperty("工时额定单位")
private String hqUnit;
/**
* 报工数
*/
@ColumnWidth(20)
@ExcelProperty("报工数")
private String workQty;
/**
* 总工时
*/
@ColumnWidth(20)
@ExcelProperty("总工时")
private String hourTotal;
/**
* 责任人
*/
@ColumnWidth(20)
@ExcelProperty("责任人")
private String worker;
/**
* 厚度
*/
@ColumnWidth(20)
@ExcelProperty("厚度")
private String plateThickness;
/**
* 生产标识
*/
@ColumnWidth(20)
@ExcelProperty("生产标识")
private String prodIdent;
/**
* 单批数量
*/
@ColumnWidth(20)
@ExcelProperty("单批数量")
private String singleBatchNo;
/**
* 入库数量
*/
@ColumnWidth(20)
@ExcelProperty("入库数量")
private String putQuantity;
/**
* 报废数量
*/
@ColumnWidth(20)
@ExcelProperty("报废数量")
private String scrapQty;
/**
* 消耗数量
*/
@ColumnWidth(20)
@ExcelProperty("消耗数量")
private String lossQty;
/**
* 试验数量
*/
@ColumnWidth(20)
@ExcelProperty("试验数量")
private String testQty;
/**
* 单件面积(dm²)
*/
@ColumnWidth(20)
@ExcelProperty("单件面积(dm²)")
private String poArea;
/**
* 总面积(d)
*/
@ColumnWidth(20)
@ExcelProperty("总面积(d㎡)")
private String totalArea;
/**
* 镀后入库时间
*/
@ColumnWidth(20)
@ExcelProperty("镀后入库时间")
private String putStoreTime;
/**
* 基础薪资金额
*/
@ColumnWidth(20)
@ExcelProperty("基础金额")
private String baseAmount;
/**
* 补贴薪资金额
*/
@ColumnWidth(20)
@ExcelProperty("补贴金额")
private String subsidyAmount;
/**
* 总薪资金额
*/
@ColumnWidth(20)
@ExcelProperty("总金额")
private String totalAmount;
}

@ -59,4 +59,8 @@ public class BsEfficiencyTaskVO extends BsEfficiencyTaskEntity {
* true: 升序false: 降序
*/
private boolean isAsc;
public boolean getAsc(){
return isAsc;
}
}

@ -42,6 +42,8 @@ public class BsEfficiencyTaskServiceImpl extends BaseServiceImpl<BsEfficiencyTas
sub.setType("2");
sub.setTaskName(bsEfficiencyTask.getTaskName());
sub.setReportUserName(bsEfficiencyTask.getReportUserName());
sub.setOrderByField(bsEfficiencyTask.getOrderByField());
sub.setAsc(bsEfficiencyTask.getAsc());
List<BsEfficiencyTaskVO> subTasks = this.selectBsEfficiencyTaskList(sub);
bsEfficiencyTaskVO.setSubTasks(subTasks);
}

@ -94,5 +94,7 @@ public interface WorkPlanMapper extends BaseMapper<WorkPlan> {
List<BsSalaryCalculationVO> selectBsSalaryCalculationPage(IPage<BsSalaryCalculationVO> page, BsSalaryCalculationDTO bsSalaryCalculation);
List<BsSalaryCalculationVO> exportBsSalaryCalculation(BsSalaryCalculationDTO bsSalaryCalculation);
List<AllWorkPlanVO> getByCardNoByPlanAll(Long id);
}

@ -586,4 +586,137 @@
ORDER BY a.ORDERS
</select>
<select id="exportBsSalaryCalculation" resultType="org.springblade.desk.efficiency.pojo.vo.BsSalaryCalculationVO">
SELECT * FROM (
SELECT
f.WO_CODE AS woCode,
g.PART_CODE AS partCode,
g.PART_NAME AS partName,
f.BATCH_NO AS batchNo,
g.USE_DEPT AS useDept,
g.PLATE AS plate,
i.WC_NAME AS wcName,
e.TS_NAME AS team,
b.NAME AS ppsName,
a.HOUR_QUOTA AS hourQuota,
c.WORK_QTY AS workQty,
d.REAL_NAME AS worker,
k.PRODUCT_TYPE AS productType,
g.PRODUCT_IDENT AS prodIdent,
a.WORK_QTY AS singleBatchNo,
f.inventory_qty AS putQuantity,
f.scrap_qty AS scrapQty,
f.loss_qty AS lossQty,
f.test_qty AS testQty,
g.YP_AREA AS poArea,
a.WORK_QTY * g.YP_AREA AS totalArea,
f.put_store_time AS putStoreTime,
a.WP_MONEY AS wpMoney,
a.BASE_AMOUNT as baseAmount,
a.SUBSIDY_AMOUNT as subsidyAmount,
k.PLATE_THICKNESS as plateThickness,
CASE WHEN a.BASE_AMOUNT IS NULL AND a.SUBSIDY_AMOUNT IS NULL
THEN NULL
ELSE NVL(a.BASE_AMOUNT, 0) + NVL(a.SUBSIDY_AMOUNT, 0)
END AS totalAmount
FROM MES_WORK_PLAN a
INNER JOIN BS_PROCESS_SET b ON a.PPS_ID = b.ID AND b.IS_DELETED = 0
INNER JOIN MES_MAKE_REC c ON a.ID = c.WP_ID AND c.IS_DELETED = 0
INNER JOIN BLADE_USER d ON c.WORKER = d.ID AND d.IS_DELETED = 0
INNER JOIN BS_TEAM_SET e ON a.MAKE_TEAM = e.ID AND e.IS_DELETED = 0
INNER JOIN MES_WORK_ORDER f ON a.WO_ID = f.ID AND f.run_status != 19 AND f.IS_DELETED = 0
INNER JOIN MES_YIELD_ORDER g ON f.YO_ID = g.ID AND g.IS_DELETED = 0
INNER JOIN BS_CENTER_TEAM h ON e.ID = h.TS_ID AND e.WC_ID = h.WC_ID AND h.IS_DELETED = 0
INNER JOIN BS_WORK_CENTER i ON h.WC_ID = i.ID AND i.IS_DELETED = 0
INNER JOIN DS_PART_VERSION j on g.part_code = j.part_code and g.part_version = j.part_version and j.IS_DELETED =
0
INNER JOIN DS_PART k ON j.part_id = k.ID AND k.IS_DELETED = 0
INNER JOIN MES_QUALITY_GRADE l on g.PRODUCT_IDENT = l.QUALITY_GRADE
<where>
a.OEM = 0 AND a.WORK_QTY > 0 and a.IS_DELETED = 0
<if test="woCode!=null">
and f.WO_CODE like concat(concat('%', #{woCode}),'%')
</if>
<if test="cardNo!=null">
and f.CARD_NO like concat(concat('%', #{cardNo}),'%')
</if>
<if test="startDate!=null">
and TRUNC(f.PUT_STORE_TIME) <![CDATA[ >= ]]> to_date(#{startDate}, 'yyyy-mm-dd')
</if>
<if test="endDate!=null">
and TRUNC(f.PUT_STORE_TIME) <![CDATA[ <= ]]> to_date(#{endDate}, 'yyyy-mm-dd')
</if>
<if test="productType!=null">
and g.PRODUCT_TYPE like concat(concat('%', #{productType}),'%')
</if>
<if test="plate!=null">
and g.plate like concat(concat('%', #{plate}),'%')
</if>
<if test="wcName!=null">
and i.WC_NAME like concat(concat('%', #{wcName}),'%')
</if>
<if test="wcId!=null">
and i.ID = #{wcId}
</if>
<if test="wcIds!=null">
and i.ID IN
<foreach collection="wcIds.split(',')"
item="wc_id"
open="(" separator="," close=")">
#{wc_id}
</foreach>
</if>
<if test="ppsIds!=null">
and a.PPS_ID IN
<foreach collection="ppsIds.split(',')"
item="pps_id"
open="(" separator="," close=")">
#{pps_id}
</foreach>
</if>
<if test="ppsId!=null">
and a.PPS_ID = #{ppsId}
</if>
<if test="ppsName!=null">
and b.NAME like concat(concat('%', #{ppsName}),'%')
</if>
<if test="prodIdent!=null">
and l.ID = #{prodIdent}
</if>
<if test="prodIdents!=null">
and l.ID IN
<foreach collection="prodIdents.split(',')"
item="prod_ident"
open="(" separator="," close=")">
#{prod_ident}
</foreach>
</if>
<if test="minSingleBatchNo!=null">
and a.work_qty <![CDATA[ >= ]]> #{minSingleBatchNo}
</if>
<if test="maxSingleBatchNo!=null">
and a.work_qty <![CDATA[ <= ]]> #{maxSingleBatchNo}
</if>
<if test="minTotalArea!=null">
and (a.WORK_QTY * g.YP_AREA) <![CDATA[ >= ]]> #{minTotalArea}
</if>
<if test="maxTotalArea!=null">
and (a.WORK_QTY * g.YP_AREA) <![CDATA[ <= ]]> #{maxTotalArea}
</if>
</where>
)
<choose>
<when test="orderByField != null and orderByField != ''">
ORDER BY ${orderByField}
<if test="isAsc">ASC</if>
<if test="!isAsc">DESC</if>
</when>
<otherwise>
ORDER BY putStoreTime desc
</otherwise>
</choose>
</select>
</mapper>

@ -63,5 +63,7 @@ public interface IWorkPlanService extends BaseService<WorkPlan> {
IPage<BsSalaryCalculationVO> selectBsSalaryCalculationPage(IPage<BsSalaryCalculationVO> page, BsSalaryCalculationDTO bsSalaryCalculation);
List<BsSalaryCalculationVO> exportBsSalaryCalculation(BsSalaryCalculationDTO bsSalaryCalculation);
List<AllWorkPlanVO> getByCardNoByPlanAll(Long id);
}

@ -329,6 +329,11 @@ public class WorkPlanServiceImpl extends BaseServiceImpl<WorkPlanMapper, WorkPla
return page.setRecords(baseMapper.selectBsSalaryCalculationPage(page, bsSalaryCalculation));
}
@Override
public List<BsSalaryCalculationVO> exportBsSalaryCalculation(BsSalaryCalculationDTO bsSalaryCalculation) {
return baseMapper.exportBsSalaryCalculation(bsSalaryCalculation);
}
@Override
public List<AllWorkPlanVO> getByCardNoByPlanAll(Long id) {
return baseMapper.getByCardNoByPlanAll(id);

Loading…
Cancel
Save