作者 雷海东

月工时信息、工资导入判断工时

正在显示 35 个修改的文件 包含 596 行增加50 行删除
... ... @@ -17,14 +17,22 @@ import javax.sql.DataSource;
@Configuration
@EnableTransactionManagement
public class AppConfig {
@Value("${spring.datasource.dynamic.datasource.master.url}")
private String url;
@Value("${spring.datasource.dynamic.datasource.master.username}")
private String username;
@Value("${spring.datasource.dynamic.datasource.master.password}")
private String password;
@Value("${spring.datasource.dynamic.datasource.master.driver-class-name}")
private String className;
@Bean
public DataSource dataSource() {
// 配置数据源
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver");
dataSource.setUrl("jdbc:mysql://rm-2zeiuncjm75qti641ho.mysql.rds.aliyuncs.com:3306/jeecg-boot");
dataSource.setUsername("ntsd_root");
dataSource.setPassword("L3bHRJwg6lJ2SC4WFfGA");
dataSource.setDriverClassName(className);
dataSource.setUrl(url);
dataSource.setUsername(username);
dataSource.setPassword(password);
return dataSource;
}
@Bean
... ...
... ... @@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.beanutils.PropertyUtils;
import org.apache.poi.hpsf.Decimal;
import org.apache.poi.ss.formula.functions.T;
import org.apache.shiro.SecurityUtils;
import org.jeecg.common.api.vo.Result;
... ... @@ -34,6 +35,8 @@ import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.lang.reflect.Field;
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.stream.Collectors;
... ... @@ -45,7 +48,7 @@ import java.util.stream.Collectors;
*/
@Slf4j
public class JeecgController2<T, t, b, V extends IService<t>, S extends IService<T>, B extends IService<b>> {
public class JeecgController2<T, t, b,w, V extends IService<t>, S extends IService<T>, B extends IService<b>,W extends IService<w>> {
/**
* issues/2933 JeecgController注入service时改用protected修饰,能避免重复引用service
*/
... ... @@ -55,6 +58,8 @@ public class JeecgController2<T, t, b, V extends IService<t>, S extends IService
protected V servicevo;
@Autowired
protected B servicebase;
@Autowired
protected W serviceTime;
@Value("${jeecg.path.upload}")
... ... @@ -303,7 +308,7 @@ public class JeecgController2<T, t, b, V extends IService<t>, S extends IService
//工资导入
@Transactional
public Result<?> importExcelgz(HttpServletRequest request, HttpServletResponse response, Class<T> clazz, Class<b> base) {
public Result<?> importExcelgz(HttpServletRequest request, HttpServletResponse response, Class<T> clazz, Class<b> base,Class<w> workTime) {
MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
Map<String, MultipartFile> fileMap = multipartRequest.getFileMap();
for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) {
... ... @@ -352,10 +357,31 @@ public class JeecgController2<T, t, b, V extends IService<t>, S extends IService
// 如果至少有一个字段值不为空,则保存数据到待保存列表
// 使用工号和姓名去基本信息表中检查是否存在对应的员工信息
b employeeExists = checkEmployeeExists(data);
boolean select=selectWorkTime(data);
if (employeeExists != null) {
if(select){
// 如果员工存在,则保存这条数据到数据库中
shuju.add(data);
}else {
// 获取 data 对象的类
Class<?> clazz2 = data.getClass();
// 获取 工号 字段的值
Field jobId = clazz2.getDeclaredField("jobId");
jobId.setAccessible(true); // 设置可访问性,因为字段可能是私有的
String jobid = (String) jobId.get(data);
// 获取 姓名 字段的值
Field name = clazz2.getDeclaredField("userName");
name.setAccessible(true); // 设置可访问性,因为字段可能是私有的
String userName = (String) name.get(data);
// 如果员工不存在,则记录下当前数据的位置信息,比如行号
int rowNumber = rowIndex + 1; // 行号从1开始
// 这里可以根据需要将数据位置信息存储起来,比如记录到日志中或者构建一个错误信息列表等
// 示例:errorList.add("第 " + rowNumber + " 行的工号 " + data.get工号() + "、姓名 " + data.get姓名() + " 不存在对应的员工");
// 或者直接在此处输出错误信息
return Result.error("导入失败,第 " + rowNumber + " 行的工号 :" + jobid+ "、姓名 :" + userName + " 的标准工时数与工时信息表工时不匹配");
}
} else {
// 获取 data 对象的类
Class<?> clazz2 = data.getClass();
... ... @@ -368,6 +394,7 @@ public class JeecgController2<T, t, b, V extends IService<t>, S extends IService
Field name = clazz2.getDeclaredField("userName");
name.setAccessible(true); // 设置可访问性,因为字段可能是私有的
String userName = (String) name.get(data);
// 如果员工不存在,则记录下当前数据的位置信息,比如行号
int rowNumber = rowIndex + 1; // 行号从1开始
// 这里可以根据需要将数据位置信息存储起来,比如记录到日志中或者构建一个错误信息列表等
... ... @@ -422,6 +449,47 @@ public class JeecgController2<T, t, b, V extends IService<t>, S extends IService
return Result.error("文件导入失败!");
}
private boolean selectWorkTime(T data) {
try {
QueryWrapper<w> queryWrapper = new QueryWrapper<>();
// 获取 data 对象的类
Class<?> clazz2 = data.getClass();
// 获取 标准工时数 字段的值
Field hours = clazz2.getDeclaredField("workingHours");
hours.setAccessible(true); // 设置可访问性,因为字段可能是私有的
BigDecimal workingHours = (BigDecimal) hours.get(data);
// 获取 姓名 字段的值
Field name = clazz2.getDeclaredField("userName");
name.setAccessible(true); // 设置可访问性,因为字段可能是私有的
String userName = (String) name.get(data);
// 获取 月份 字段的值
Field month = clazz2.getDeclaredField("salaryMonth");
month.setAccessible(true); // 设置可访问性,因为字段可能是私有的
Date salaryMonth = (Date) month.get(data);
SimpleDateFormat outputFormat = new SimpleDateFormat("yyyy-MM");
String outputDateString = outputFormat.format(salaryMonth);
queryWrapper.eq("name",userName+"(普工)");
List<w> list = serviceTime.list(queryWrapper);
if(list.size()==0) {
return true;
}else {
queryWrapper.eq("work_time",workingHours);
queryWrapper.eq("name",userName+"(普工)");
queryWrapper.apply("DATE_FORMAT(salary_month, '%Y-%m') = '" + outputDateString + "'");
System.out.println("输出:"+serviceTime.getOne(queryWrapper));
w one2 = serviceTime.getOne(queryWrapper);
if(one2!=null){
return true;
}
}
return false;
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
private b checkEmployeeExists(T data) {
try {
QueryWrapper<b> queryWrapper = new QueryWrapper<>();
... ...
... ... @@ -21,5 +21,4 @@ public interface TblDepotMapper extends BaseMapper<TblDepot> {
List<Map<String,Object>> selectPartNumberAndCreateTime();
int updateDepot(@Param("partNumber") String partNumber,@Param("createTime") String createTime);
}
... ...
... ... @@ -4,6 +4,8 @@ import io.swagger.models.auth.In;
import org.jeecg.modules.erp.depot.entity.TblDepot;
import com.baomidou.mybatisplus.extension.service.IService;
import java.util.List;
/**
* @Description: tbl_depot
* @Author: jeecg-boot
... ...
... ... @@ -8,6 +8,8 @@ import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import java.util.List;
/**
* @Description: tbl_depot
* @Author: jeecg-boot
... ...
... ... @@ -3,6 +3,8 @@ package org.jeecg.modules.erp.depot_stock.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.jeecg.modules.erp.depot_stock.entity.ViewDepotStock;
import java.util.List;
/**
* @Description: view_depot_stock
* @Author: jeecg-boot
... ... @@ -17,4 +19,6 @@ public interface ViewDepotStockMapper extends BaseMapper<ViewDepotStock> {
* @param productName
*/
ViewDepotStock pageProductName (String productName);
List<ViewDepotStock> pageTblOrderFormDate(Integer day);
}
... ...
... ... @@ -13,4 +13,24 @@
WHERE
product_name = #{productName}
</select>
<select id="pageTblOrderFormDate" resultType="org.jeecg.modules.erp.depot_stock.entity.ViewDepotStock">
SELECT
d.id,
o.order_id,
o.order_date,
d.part_number,
d.product_name,
d.oper_number
FROM
tbl_order_form as o,tbl_bidding_shenq as s,view_depot_stock as d
WHERE
DATEDIFF(
o.order_date,
NOW()) <![CDATA[ < ]]> #{day}
AND DATEDIFF(
o.order_date,
NOW())>= 0
AND o.verify_status = 0
AND o.order_id=s.order_id AND s.part_number=d.part_number
</select>
</mapper>
\ No newline at end of file
... ...
... ... @@ -3,6 +3,8 @@ package org.jeecg.modules.erp.depot_stock.service;
import org.jeecg.modules.erp.depot_stock.entity.ViewDepotStock;
import com.baomidou.mybatisplus.extension.service.IService;
import java.util.List;
/**
* @Description: view_depot_stock
* @Author: jeecg-boot
... ... @@ -18,4 +20,5 @@ public interface IViewDepotStockService extends IService<ViewDepotStock> {
*/
ViewDepotStock pageProductName (String productName);
List<ViewDepotStock> pageTblOrderFormDate(Integer day);
}
... ...
... ... @@ -7,6 +7,8 @@ import org.jeecg.modules.erp.depot_stock.service.IViewDepotStockService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* @Description: view_depot_stock
* @Author: jeecg-boot
... ... @@ -23,4 +25,9 @@ public class ViewDepotStockServiceImpl extends ServiceImpl<ViewDepotStockMapper,
public ViewDepotStock pageProductName(String productName) {
return viewDepotStockMapper.pageProductName(productName);
}
@Override
public List<ViewDepotStock> pageTblOrderFormDate(Integer day) {
return viewDepotStockMapper.pageTblOrderFormDate(day);
}
}
... ...
... ... @@ -5,6 +5,8 @@ import lombok.extern.slf4j.Slf4j;
import org.jeecg.common.api.vo.Result;
import org.jeecg.modules.erp.baseLibrary.entity.TblFinishProduct;
import org.jeecg.modules.erp.baseLibrary.service.ITblFinishProductService;
import org.jeecg.modules.erp.depot.entity.TblDepot;
import org.jeecg.modules.erp.depot.service.ITblDepotService;
import org.jeecg.modules.erp.depot_stock.entity.ViewDepotStock;
import org.jeecg.modules.erp.depot_stock.service.IViewDepotStockService;
import org.jeecg.modules.erp.meterial_statistics.entity.MeterialQueryParam;
... ... @@ -15,6 +17,8 @@ import org.jeecg.modules.erp.order_form.entity.TblOrderForm;
import org.jeecg.modules.erp.order_form.entity.TblWorkOrder;
import org.jeecg.modules.erp.order_form.service.ITblOrderFormService;
import org.jeecg.modules.erp.order_form.service.ITblWorkOrderService;
import org.jeecg.modules.erp.production.entity.TblProductionGongxu;
import org.jeecg.modules.erp.production.service.ITblProductionGongxuService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
... ... @@ -45,36 +49,52 @@ public class MeterialStatisticsController {
@Autowired
private MeterialStatisticsService statisticsService;
@Autowired
private IViewDepotStockService depotService;
private List<MeterialStatistics> meterialStatistics = new ArrayList<>();
private Map<String,Integer> mapNum;
// @ApiOperation(value = "物料统计", notes = "物料统计")
// @GetMapping(value = "/list")
// public Result<List<Map<String, Object>>> queryPageList(MeterialQueryParam meterialStatistic,
// @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
// @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize,
// HttpServletRequest req) {
// meterialStatistics = new ArrayList<>();
// mapNum = new HashMap<>();
// List<Map<String, Object>> mapO = new ArrayList<>();
// List<TblOrderForm> tblOrderForms = tblOrderFormService.pageTblOrderFormDate(meterialStatistic.getDay());
// if(tblOrderForms.size() > 0){
// for (TblOrderForm tblOrderForm: tblOrderForms) {
// List<TblWorkOrder> tblWorkOrders = workOrderService.selectByMainId(tblOrderForm.getId());
// if(tblWorkOrders==null) {
// return Result.error("未找到对应数据");
// }
// getOrder(tblWorkOrders,tblOrderForm.getOrderDate(),meterialStatistic.getProductName());
// mapO = getMapO();
// }
// }else{
// return Result.OK(mapO);
// }
//
//
// return Result.OK(mapO);
// }
@ApiOperation(value = "物料统计", notes = "物料统计")
@GetMapping(value = "/list")
public Result<List<Map<String, Object>>> queryPageList(MeterialQueryParam meterialStatistic,
public Result<?> queryPageList(MeterialQueryParam meterialStatistic,
@RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
@RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize,
HttpServletRequest req) {
meterialStatistics = new ArrayList<>();
mapNum = new HashMap<>();
List<Map<String, Object>> mapO = new ArrayList<>();
List<TblOrderForm> tblOrderForms = tblOrderFormService.pageTblOrderFormDate(meterialStatistic.getDay());
if(tblOrderForms.size() > 0){
for (TblOrderForm tblOrderForm: tblOrderForms) {
List<TblWorkOrder> tblWorkOrders = workOrderService.selectByMainId(tblOrderForm.getId());
if(tblWorkOrders==null) {
return Result.error("未找到对应数据");
}
getOrder(tblWorkOrders,tblOrderForm.getOrderDate(),meterialStatistic.getProductName());
mapO = getMapO();
}
}else{
return Result.OK(mapO);
}
return Result.OK(mapO);
List<ViewDepotStock> tblOrderForms = depotService.pageTblOrderFormDate(meterialStatistic.getDay());
return Result.OK(tblOrderForms);
}
public List<Map<String,Object>> getMapO(){
... ...
package org.jeecg.modules.erp.order_form.controller;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.util.*;
import java.util.stream.Collectors;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.jeecg.common.api.vo.Result;
import org.jeecg.common.system.query.QueryGenerator;
import org.jeecg.common.util.oConvertUtils;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import lombok.extern.slf4j.Slf4j;
import org.jeecg.modules.erp.order_form.entity.TblWorkTime;
import org.jeecg.modules.erp.order_form.service.ITblWorkTimeService;
import org.jeecgframework.poi.excel.ExcelImportUtil;
import org.jeecgframework.poi.excel.def.NormalExcelConstants;
import org.jeecgframework.poi.excel.entity.ExportParams;
import org.jeecgframework.poi.excel.entity.ImportParams;
import org.jeecgframework.poi.excel.view.JeecgEntityExcelView;
import org.jeecg.common.system.base.controller.JeecgController;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import org.springframework.web.servlet.ModelAndView;
import com.alibaba.fastjson.JSON;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.jeecg.common.aspect.annotation.AutoLog;
/**
* @Description: tbl_work_time
* @Author: jeecg-boot
* @Date: 2024-06-13
* @Version: V1.0
*/
@Api(tags="tbl_work_time")
@RestController
@RequestMapping("/work_time/tblWorkTime")
@Slf4j
public class TblWorkTimeController extends JeecgController<TblWorkTime, ITblWorkTimeService> {
@Autowired
private ITblWorkTimeService tblWorkTimeService;
/**
* 分页列表查询
*
* @param tblWorkTime
* @param pageNo
* @param pageSize
* @param req
* @return
*/
//@AutoLog(value = "tbl_work_time-分页列表查询")
@ApiOperation(value="tbl_work_time-分页列表查询", notes="tbl_work_time-分页列表查询")
@GetMapping(value = "/list")
public Result<IPage<TblWorkTime>> queryPageList(TblWorkTime tblWorkTime,
@RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
@RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
HttpServletRequest req) {
QueryWrapper<TblWorkTime> queryWrapper = new QueryWrapper<>();
queryWrapper.orderByDesc("salary_month");
if(tblWorkTime.getName()!=null && !tblWorkTime.getName().isEmpty()){
String name = tblWorkTime.getName().replace("*", "");
queryWrapper.like("name", "%" + name + "%");
}
if(tblWorkTime.getSalaryMonth()!=null){
Date salaryMonth = tblWorkTime.getSalaryMonth();
SimpleDateFormat outputFormat = new SimpleDateFormat("yyyy-MM");
String outputDateString = outputFormat.format(salaryMonth);
queryWrapper.apply("DATE_FORMAT(salary_month, '%Y-%m') = '" + outputDateString + "'");
}
Page<TblWorkTime> page = new Page<TblWorkTime>(pageNo, pageSize);
IPage<TblWorkTime> pageList = tblWorkTimeService.page(page, queryWrapper);
return Result.OK(pageList);
}
/**
* 添加
*
* @param tblWorkTime
* @return
*/
@AutoLog(value = "tbl_work_time-添加")
@ApiOperation(value="tbl_work_time-添加", notes="tbl_work_time-添加")
@PostMapping(value = "/add")
public Result<String> add(@RequestBody TblWorkTime tblWorkTime) {
tblWorkTimeService.save(tblWorkTime);
return Result.OK("添加成功!");
}
/**
* 编辑
*
* @param tblWorkTime
* @return
*/
@AutoLog(value = "tbl_work_time-编辑")
@ApiOperation(value="tbl_work_time-编辑", notes="tbl_work_time-编辑")
@RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
public Result<String> edit(@RequestBody TblWorkTime tblWorkTime) {
tblWorkTimeService.updateById(tblWorkTime);
return Result.OK("编辑成功!");
}
/**
* 通过id删除
*
* @param id
* @return
*/
@AutoLog(value = "tbl_work_time-通过id删除")
@ApiOperation(value="tbl_work_time-通过id删除", notes="tbl_work_time-通过id删除")
@DeleteMapping(value = "/delete")
public Result<String> delete(@RequestParam(name="id",required=true) String id) {
tblWorkTimeService.removeById(id);
return Result.OK("删除成功!");
}
/**
* 批量删除
*
* @param ids
* @return
*/
@AutoLog(value = "tbl_work_time-批量删除")
@ApiOperation(value="tbl_work_time-批量删除", notes="tbl_work_time-批量删除")
@DeleteMapping(value = "/deleteBatch")
public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
this.tblWorkTimeService.removeByIds(Arrays.asList(ids.split(",")));
return Result.OK("批量删除成功!");
}
/**
* 通过id查询
*
* @param id
* @return
*/
//@AutoLog(value = "tbl_work_time-通过id查询")
@ApiOperation(value="tbl_work_time-通过id查询", notes="tbl_work_time-通过id查询")
@GetMapping(value = "/queryById")
public Result<TblWorkTime> queryById(@RequestParam(name="id",required=true) String id) {
TblWorkTime tblWorkTime = tblWorkTimeService.getById(id);
if(tblWorkTime==null) {
return Result.error("未找到对应数据");
}
return Result.OK(tblWorkTime);
}
/**
* 导出excel
*
* @param request
* @param tblWorkTime
*/
@RequestMapping(value = "/exportXls")
public ModelAndView exportXls(HttpServletRequest request, TblWorkTime tblWorkTime) {
return super.exportXls(request, tblWorkTime, TblWorkTime.class, "tbl_work_time");
}
/**
* 通过excel导入数据
*
* @param request
* @param response
* @return
*/
@RequestMapping(value = "/importExcel", method = RequestMethod.POST)
public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
return super.importExcel(request, response, TblWorkTime.class);
}
}
... ...
package org.jeecg.modules.erp.order_form.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.jeecgframework.poi.excel.annotation.Excel;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
import java.math.BigDecimal;
/**
* @Description: tbl_work_time
* @Author: jeecg-boot
* @Date: 2024-06-13
* @Version: V1.0
*/
@Data
@TableName("tbl_work_time")
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = false)
@ApiModel(value="tbl_work_time对象", description="tbl_work_time")
public class TblWorkTime implements Serializable {
private static final long serialVersionUID = 1L;
/**id*/
@TableId(type = IdType.ASSIGN_ID)
@ApiModelProperty(value = "id")
private java.lang.Integer id;
/**月份*/
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM")
@DateTimeFormat(pattern="yyyy-MM")
@ApiModelProperty(value = "月份")
private java.util.Date salaryMonth;
/**姓名*/
@ApiModelProperty(value = "姓名")
private java.lang.String name;
/**月总工时*/
@ApiModelProperty(value = "月总工时")
private BigDecimal workTime;
/**创建人*/
@ApiModelProperty(value = "创建人")
private java.lang.String createBy;
/**创建日期*/
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern="yyyy-MM-dd")
@ApiModelProperty(value = "创建日期")
private java.util.Date createTime;
/**更新人*/
@ApiModelProperty(value = "更新人")
private java.lang.String updateBy;
/**更新日期*/
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern="yyyy-MM-dd")
@ApiModelProperty(value = "更新日期")
private java.util.Date updateTime;
}
... ...
package org.jeecg.modules.erp.order_form.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.jeecg.modules.erp.order_form.entity.TblWorkTime;
public interface TblWorkTimeMapper extends BaseMapper<TblWorkTime> {
}
... ...
... ... @@ -4,21 +4,23 @@
<select id="pageTblOrderFormDate" parameterType="java.lang.Integer" resultType="org.jeecg.modules.erp.order_form.entity.TblOrderForm">
SELECT
id,
order_id,
order_company,
order_date,
delivery_date
d.id,
o.order_id,
o.order_date,
d.part_number,
d.product_name,
d.oper_number
FROM
tbl_order_form
tbl_order_form as o,tbl_bidding_shenq as s,view_depot_stock as d
WHERE
DATEDIFF(
order_date,
NOW()) <![CDATA[ < ]]> #{id}
o.order_date,
NOW()) <![CDATA[ < ]]> #{integer}
AND DATEDIFF(
order_date,
o.order_date,
NOW())>= 0
AND STATUS = '生产中'
AND o.verify_status = 0
AND o.order_id=s.order_id AND s.part_number=d.part_number
</select>
<!-- <select id="selectAll" resultType="org.jeecg.modules.erp.order_form.entity.TblOrderForm">-->
<!-- SELECT-->
... ...
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.jeecg.modules.erp.order_form.mapper.TblWorkTimeMapper">
</mapper>
\ No newline at end of file
... ...
package org.jeecg.modules.erp.order_form.service;
import com.baomidou.mybatisplus.extension.service.IService;
import org.jeecg.modules.erp.order_form.entity.TblWorkTime;
public interface ITblWorkTimeService extends IService<TblWorkTime> {
}
... ...
package org.jeecg.modules.erp.order_form.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.jeecg.modules.erp.order_form.entity.TblWorkTime;
import org.jeecg.modules.erp.order_form.mapper.TblWorkTimeMapper;
import org.jeecg.modules.erp.order_form.service.ITblWorkTimeService;
import org.springframework.stereotype.Service;
@Service
public class TblWorkTimeServiceImpl extends ServiceImpl<TblWorkTimeMapper, TblWorkTime> implements ITblWorkTimeService {
}
... ...
... ... @@ -21,6 +21,7 @@ import lombok.extern.slf4j.Slf4j;
import org.jeecg.common.system.base.controller.JeecgController;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.ModelAndView;
import io.swagger.annotations.Api;
... ... @@ -74,6 +75,7 @@ public class TblProductionGongxuController extends JeecgController<TblProduction
@AutoLog(value = "tbl_production_gongxu-添加")
@ApiOperation(value="tbl_production_gongxu-添加", notes="tbl_production_gongxu-添加")
@PostMapping(value = "/add")
@Transactional(rollbackFor = Exception.class)
public Result<?> add(@RequestBody List<TblProductionGongxu> tblProductionGongxuList) {
tblProductionGongxuService.saveOrUpdateBatch(tblProductionGongxuList);
TblOrderForm tblOrderForm=new TblOrderForm();
... ... @@ -97,11 +99,13 @@ public class TblProductionGongxuController extends JeecgController<TblProduction
//批量修改工序验收
@PutMapping("/updateYan")
@Transactional(rollbackFor = Exception.class)
public Result<?> updateYan(@RequestBody List<TblProductionGongxu> tblProductionGongxuList){
boolean b = tblProductionGongxuService.updateBatchById(tblProductionGongxuList);
LambdaQueryWrapper<TblProductionGongxu> queryWrapper=new LambdaQueryWrapper<TblProductionGongxu>()
.eq(TblProductionGongxu::getOrderNumber,tblProductionGongxuList.get(0).getOrderNumber());
if(b){
tblProductionGongxuService.selectAdd();//查询已合格工序并汇总工时
List<TblProductionGongxu> list = tblProductionGongxuService.list(queryWrapper);
boolean allHhhQualified = true;
for (TblProductionGongxu productionGongxu : list) {
... ...
package org.jeecg.modules.erp.production.controller;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.jeecg.common.api.vo.Result;
import org.jeecg.common.system.query.QueryGenerator;
import org.jeecg.modules.erp.order_form.entity.TblOrderForm;
import org.jeecg.modules.erp.order_form.entity.TblWorkTime;
import org.jeecg.modules.erp.order_form.service.ITblOrderFormService;
import org.jeecg.modules.erp.product_design.entity.TblProductDesign;
import org.jeecg.modules.erp.product_design.service.ITblProductDesignService;
... ... @@ -21,6 +25,7 @@ import lombok.extern.slf4j.Slf4j;
import org.jeecg.common.system.base.controller.JeecgController;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.ModelAndView;
import io.swagger.annotations.Api;
... ... @@ -91,6 +96,22 @@ public class TblProductionPlanController extends JeecgController<TblOrderForm, I
List<TblProductionGongxu> list = gongxuService.list(queryWrapper);
return Result.OK(list);
}
// 根据日期、姓名查找工序
@GetMapping(value = "/querygxone")
public Result<?> querygxone(@RequestParam(name = "salaryMonth")
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM")
@DateTimeFormat(pattern="yyyy-MM")
Date salaryMonth, @RequestParam(name="name",required=true) String name) {
QueryWrapper<TblProductionGongxu> queryWrapper = new QueryWrapper<>();
SimpleDateFormat outputFormat = new SimpleDateFormat("yyyy-MM");
String outputDateString = outputFormat.format(salaryMonth);
queryWrapper.apply("DATE_FORMAT(yan_time, '%Y-%m') = '" + outputDateString + "'");
queryWrapper.eq("undertaker",name);
queryWrapper.eq("yan_result","合格入库");
List<TblProductionGongxu> list = gongxuService.list(queryWrapper);
return Result.OK(list);
}
/**
* 导出excel
*
... ...
... ... @@ -4,6 +4,7 @@ import java.util.List;
import org.apache.ibatis.annotations.Param;
import org.jeecg.modules.erp.order_form.entity.TblOrderForm;
import org.jeecg.modules.erp.order_form.entity.TblWorkOrder;
import org.jeecg.modules.erp.production.entity.TblProductionGongxu;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
... ... @@ -22,4 +23,6 @@ public interface TblProductionGongxuMapper extends BaseMapper<TblProductionGongx
void updateByStatus(String orderNumber);
Integer deleteByOrderId(String orderId);
void selectAdd();
}
... ...
... ... @@ -13,6 +13,14 @@
<select id="getByhours" resultType="org.jeecg.modules.erp.order_form.entity.TblOrderForm">
select * from tbl_order_form where order_id=#{orderNumber}
</select>
<insert id="selectAdd">
INSERT INTO tbl_work_time(`name`, salary_month, work_time)
SELECT undertaker,yan_time, SUM(work_hours)
FROM tbl_production_gongxu
WHERE yan_result = '合格入库' AND yan_time!='null'
GROUP BY undertaker, CONCAT(YEAR(yan_time), '-', LPAD(MONTH(yan_time), 2, '0'))
ON DUPLICATE KEY UPDATE work_time = VALUES(work_time);
</insert>
<delete id="deleteByOrderId" parameterType="java.lang.String">
delete from tbl_production_gongxu where order_number = #{orderId}
</delete>
... ...
... ... @@ -2,9 +2,12 @@ package org.jeecg.modules.erp.production.service;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import org.jeecg.modules.erp.order_form.entity.TblOrderForm;
import org.jeecg.modules.erp.order_form.entity.TblWorkOrder;
import org.jeecg.modules.erp.production.entity.TblProductionGongxu;
import com.baomidou.mybatisplus.extension.service.IService;
import java.util.List;
/**
* @Description: tbl_production_gongxu
* @Author: jeecg-boot
... ... @@ -20,4 +23,6 @@ public interface ITblProductionGongxuService extends IService<TblProductionGongx
void updateByStatus(String orderNumber);
Integer deleteByOrderId(String orderId);
void selectAdd();
}
... ...
package org.jeecg.modules.erp.production.service.impl;
import org.jeecg.modules.erp.order_form.entity.TblOrderForm;
import org.jeecg.modules.erp.order_form.entity.TblWorkOrder;
import org.jeecg.modules.erp.order_form.mapper.TblOrderFormMapper;
import org.jeecg.modules.erp.production.entity.TblProductionGongxu;
import org.jeecg.modules.erp.production.mapper.TblProductionGongxuMapper;
... ... @@ -10,6 +11,8 @@ import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import java.util.List;
/**
* @Description: tbl_production_gongxu
* @Author: jeecg-boot
... ... @@ -40,4 +43,10 @@ public class TblProductionGongxuServiceImpl extends ServiceImpl<TblProductionGon
public Integer deleteByOrderId(String orderId) {
return tblProductionGongxuMapper.deleteByOrderId(orderId);
}
@Override
public void selectAdd() {
tblProductionGongxuMapper.selectAdd();
}
}
... ...
... ... @@ -13,6 +13,7 @@ import org.jeecg.common.aspect.annotation.AutoLog;
import org.jeecg.common.constant.CommonConstant;
import org.jeecg.common.system.base.controller.JeecgController;
import org.jeecg.common.system.query.QueryGenerator;
import org.jeecg.modules.erp.order_form.entity.TblOrderForm;
import org.jeecg.modules.erp.salary.entity.TblSalaryBase;
import org.jeecg.modules.erp.salary.entity.TblSalarySuanfa;
import org.jeecg.modules.erp.salary.service.ITblSalarySuanfaService;
... ... @@ -23,6 +24,7 @@ import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.*;
/**
... ... @@ -56,9 +58,43 @@ public class TblSalaryBaseController extends JeecgController<TblSalaryBase, Tbl
@RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
@RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
HttpServletRequest req){
QueryWrapper<TblSalaryBase> queryWrapper = QueryGenerator.initQueryWrapper(tblSalaryBase, req.getParameterMap());
Page<TblSalaryBase> page = new Page<>(pageNo, pageSize);
IPage<TblSalaryBase> pageList = tblSalaryBaseService.page(page,queryWrapper);
// 查询所有符合条件的记录
List<TblSalaryBase> recordsToUpdate = tblSalaryBaseService.list(queryWrapper);
List<TblSalaryBase> updateList = new ArrayList<>();
// 在这里可以根据需要进行更新操作
for (TblSalaryBase item : recordsToUpdate) {
// 根据业务需求更新字段
if(item.getJobTitle() == null || item.getJobTitle().isEmpty()) {
if (item.getJobName().equals("普工")) {
item.setJobTitle("WorkshopGeneralWorker");
} else if (item.getJobName().equals("装配主管")) {
item.setJobTitle("AssemblySupervisor");
} else if (item.getJobName().equals("装配工")) {
item.setJobTitle("Assembler");
} else if (item.getJobName().equals("采购主管")) {
item.setJobTitle("ProcurementSupervisor");
} else if (item.getJobName().equals("采购员")) {
item.setJobTitle("PurchasingOfficer");
} else if (item.getJobName().equals("车间辅助人员")) {
item.setJobTitle("WorkshopAuxiliaryPersonnel");
} else if (item.getJobName().equals("车间技术员")) {
item.setJobTitle("WorkshopTechnician");
} else if (item.getJobName().equals("车间技术主管")) {
item.setJobTitle("WorkshopTechnicalManager");
} else if (item.getJobName().equals("车间管理员")) {
item.setJobTitle("WorkshopDirector");
} else if (item.getJobName().equals("办公室行政人员")) {
item.setJobTitle("OfficeAdministrative");
}
updateList.add(item); // 将需要更新的对象加入集合
}
}
tblSalaryBaseService.updateBatchById(updateList); // 批量更新数据
return Result.OK(pageList);
}
... ... @@ -69,6 +105,13 @@ public class TblSalaryBaseController extends JeecgController<TblSalaryBase, Tbl
return Result.ok(list);
}
//普工人员下拉
@GetMapping(value = "/listSalary2")
public Result<List<Map<String,String>>> listSalary2(){
List<Map<String,String>> list = tblSalaryBaseService.selectUserPg();
return Result.ok(list);
}
@ApiOperation(value = "tbl_salary_base-手机号验证")
@GetMapping(value = "/listphone")
public Result<?> listphone(@RequestParam(name = "phone", required = true) String phone){
... ... @@ -160,4 +203,17 @@ public class TblSalaryBaseController extends JeecgController<TblSalaryBase, Tbl
public ModelAndView exportXls(HttpServletRequest request, TblSalaryBase tblSalaryBase) {
return super.exportXls(request, tblSalaryBase, TblSalaryBase.class, "基础信息");
}
/**
* 通过excel导入数据
*
* @param request
* @param response
* @return
*/
@RequestMapping(value = "/importExcel", method = RequestMethod.POST)
public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
return super.importExcel(request, response, TblSalaryBase.class);
}
}
... ...
... ... @@ -13,6 +13,8 @@ import org.jeecg.common.aspect.annotation.AutoLog;
import org.jeecg.common.system.base.controller.JeecgController2;
import org.jeecg.common.system.query.QueryGenerator;
import org.jeecg.common.util.oConvertUtils;
import org.jeecg.modules.erp.order_form.entity.TblWorkTime;
import org.jeecg.modules.erp.order_form.service.ITblWorkTimeService;
import org.jeecg.modules.erp.salary.entity.TblSalaryBase;
import org.jeecg.modules.erp.salary.entity.TblSalaryCalculation;
import org.jeecg.modules.erp.salary.entity.TblSalaryCalculationVo;
... ... @@ -26,6 +28,7 @@ import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.Resource;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.http.*;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;
import org.springframework.core.io.ClassPathResource;
... ... @@ -68,7 +71,7 @@ import static org.apache.poi.hemf.record.emfplus.HemfPlusRecordType.object;
@RestController
@RequestMapping("/salary/calculation")
@Slf4j
public class TblSalaryCalculationController extends JeecgController2<TblSalaryCalculation, TblSalaryCalculationVo, TblSalaryBase, ITblSalaryCalculationVoService, ITblSalaryCalculationService, TblSalaryBaseService> {
public class TblSalaryCalculationController extends JeecgController2<TblSalaryCalculation, TblSalaryCalculationVo, TblSalaryBase, TblWorkTime, ITblSalaryCalculationVoService, ITblSalaryCalculationService, TblSalaryBaseService, ITblWorkTimeService> {
@Autowired
private ITblSalaryCalculationService tblSalaryCalculationService;
@Autowired
... ... @@ -91,7 +94,7 @@ public class TblSalaryCalculationController extends JeecgController2<TblSalaryCa
HttpServletRequest req) {
QueryWrapper<TblSalaryCalculation> queryWrapper = QueryGenerator.initQueryWrapper(tblSalaryCalculation, req.getParameterMap());
Page<TblSalaryCalculation> page = new Page<>(pageNo, pageSize);
tblSalaryCalculationService.selectAll();
tblSalaryCalculationService.selectAndUpd();
IPage<TblSalaryCalculation> pageList = tblSalaryCalculationService.page(page, queryWrapper);
return Result.OK(pageList);
}
... ... @@ -223,7 +226,7 @@ public class TblSalaryCalculationController extends JeecgController2<TblSalaryCa
@ApiOperation(value="tbl_salary_calculation-导入", notes="tbl_salary_calculation-导入")
@RequestMapping(value = "/importExcel", method = RequestMethod.POST)
public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
return super.importExcelgz(request, response, TblSalaryCalculation.class,TblSalaryBase.class);
return super.importExcelgz(request, response, TblSalaryCalculation.class,TblSalaryBase.class,TblWorkTime.class);
}
... ... @@ -236,12 +239,13 @@ public class TblSalaryCalculationController extends JeecgController2<TblSalaryCa
@AutoLog(value = "tbl_salary_calculation-查询修改记录")
@ApiOperation(value="tbl_salary_calculation-查询修改记录", notes="tbl_salary_calculation-查询修改记录")
@RequestMapping(value = "/selectup")
@Transactional(rollbackFor = Exception.class)
public Result<String> selectup(@RequestParam(name = "salaryMonth")
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM")
@DateTimeFormat(pattern="yyyy-MM")
Date salaryMonth){
// tblSalaryCalculationService.jin();
Boolean zhi= tblSalaryCalculationService.selectup(salaryMonth);
Boolean zhi= tblSalaryCalculationService.updateByBase(salaryMonth);
if(zhi){
tblSalaryCalculationService.upjisuan(tblSalaryCalculationService.select(salaryMonth));
return Result.OK("成功!");
... ...
... ... @@ -43,10 +43,14 @@ public class TblSalaryBase implements Serializable {
@Excel(name = "姓名", width = 15)
@ApiModelProperty(value = "姓名")
private String userName;
/**岗位编号*/
// @Excel(name = "岗位编号", width = 15)
@ApiModelProperty(value = "岗位编号")
private String jobTitle;
/**岗位*/
@Excel(name = "岗位", width = 15)
@ApiModelProperty(value = "岗位")
private String jobTitle;
private String jobName;
/**工时标准*/
@Excel(name = "工时标准", width = 15)
@ApiModelProperty(value = "工时标准")
... ...
... ... @@ -16,6 +16,8 @@ import java.util.Map;
public interface TblSalaryBaseMapper extends BaseMapper<TblSalaryBase> {
List<Map<String,String>> selectUserAll();
List<Map<String, String>> selectUserPg();
}
... ...
... ... @@ -24,11 +24,11 @@ public interface TblSalaryCalculationMapper extends BaseMapper<TblSalaryCalculat
void jisuan(TblSalaryCalculation sc);
Boolean selectup(Date salaryMonth);
Boolean updateByBase(Date salaryMonth);
List<TblSalaryCalculation> select(Date salaryMonth);
void selectAll();
void selectAndUpd();
TblSalaryBase all(String jobId, String userName);
... ...
... ... @@ -32,4 +32,13 @@
<select id="selectUserAll" resultType="java.util.Map">
SELECT a.job_id jobId,CONCAT(a.user_name,'(',b.job_title,')') as userName from tbl_salary_base a left join tbl_salary_suanfa b on a.job_title = b.job_id
</select>
<select id="selectUserPg" resultType="java.util.Map">
SELECT
a.job_id jobId,
CONCAT( a.user_name, '(', b.job_title, ')' ) AS userName
FROM
tbl_salary_base a
LEFT JOIN tbl_salary_suanfa b ON a.job_title = b.job_id
WHERE a.job_title='WorkshopGeneralWorker'
</select>
</mapper>
... ...
... ... @@ -28,7 +28,7 @@
working_hours=#{workingHours}
where salary_month=#{salaryMonth} and user_name=#{userName} and job_id=#{jobId}
</update>
<update id="selectup">
<update id="updateByBase">
UPDATE tbl_salary_calculation AS sc
JOIN tbl_salary_base AS sb ON sc.user_name = sb.user_name and sc.job_id =sb.job_id
SET
... ... @@ -43,7 +43,7 @@
select * from tbl_salary_calculation
where salary_month=#{salaryMonth}
</select>
<select id="selectAll">
<select id="selectAndUpd">
UPDATE tbl_salary_calculation AS sc
JOIN tbl_salary_base AS sb ON sc.user_name = sb.user_name and sc.job_id =sb.job_id
SET
... ...
... ... @@ -22,9 +22,9 @@ public interface ITblSalaryCalculationService extends IService<TblSalaryCalculat
void upjisuan(List<TblSalaryCalculation> list);
Boolean selectup(Date salaryMonth);
Boolean updateByBase(Date salaryMonth);
List<TblSalaryCalculation> select(Date salaryMonth);
void selectAll();
void selectAndUpd();
}
... ...
... ... @@ -15,4 +15,6 @@ import java.util.Map;
public interface TblSalaryBaseService extends IService<TblSalaryBase> {
List<Map<String,String>> selectUserAll();
List<Map<String, String>> selectUserPg();
}
... ...
... ... @@ -28,6 +28,11 @@ public class TblSalaryBaseServiceImpl extends ServiceImpl<TblSalaryBaseMapper, T
public List<Map<String, String>> selectUserAll() {
return tblSalaryBaseMapper.selectUserAll();
}
@Override
public List<Map<String, String>> selectUserPg() {
return tblSalaryBaseMapper.selectUserPg();
}
}
... ...
... ... @@ -41,8 +41,8 @@ public class TblSalaryCalculationServiceImpl extends ServiceImpl<TblSalaryCalcul
}
@Override
public Boolean selectup(Date salaryMonth) {
return tblSalaryCalculationMapper.selectup(salaryMonth);
public Boolean updateByBase(Date salaryMonth) {
return tblSalaryCalculationMapper.updateByBase(salaryMonth);
}
@Override
... ... @@ -51,8 +51,8 @@ public class TblSalaryCalculationServiceImpl extends ServiceImpl<TblSalaryCalcul
}
@Override
public void selectAll() {
tblSalaryCalculationMapper.selectAll();
public void selectAndUpd() {
tblSalaryCalculationMapper.selectAndUpd();
}
@Override
... ...
... ... @@ -16,6 +16,7 @@ import lombok.extern.slf4j.Slf4j;
import org.jeecg.common.system.base.controller.JeecgController;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.ModelAndView;
import io.swagger.annotations.Api;
... ... @@ -48,6 +49,7 @@ public class TblTradZongController extends JeecgController<TblTradZong, TblTradZ
//@AutoLog(value = "tbl_trad_zong-分页列表查询")
@ApiOperation(value="tbl_trad_zong-分页列表查询", notes="tbl_trad_zong-分页列表查询")
@GetMapping(value = "/list")
@Transactional(rollbackFor = Exception.class)
public Result<IPage<TblTradZong>> queryPageList(TblTradZong tblTradZong,
@RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
@RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
... ...