| | |
| | | import com.core.annotations.ManagerAuth; |
| | | import com.core.common.R; |
| | | import com.zy.asrs.entity.MonthlySettle; |
| | | import com.zy.asrs.entity.MonthlySettleDetail; |
| | | import com.zy.asrs.entity.param.DateRangeParam; |
| | | import com.zy.asrs.entity.param.MonthlySettleQueryParam; |
| | | import com.zy.asrs.entity.result.MonthlySettleStatisticsVO; |
| | | import com.zy.asrs.service.MonthlySettleService; |
| | | import com.zy.common.web.BaseController; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.web.bind.annotation.*; |
| | | |
| | | import java.text.SimpleDateFormat; |
| | | import java.util.ArrayList; |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | |
| | | @RestController |
| | | public class MonthlySettleController extends BaseController { |
| | |
| | | return R.ok("å 餿å"); |
| | | } |
| | | |
| | | /** |
| | | * å¯¼åºæç»æç» |
| | | */ |
| | | @RequestMapping(value = "/monthlySettle/detail/export/{id}/auth") |
| | | @ManagerAuth(memo = "å¯¼åºæç»æç»") |
| | | public R exportDetail(@PathVariable("id") Long id) { |
| | | // è·åæç»ç»è®¡ä¿¡æ¯ |
| | | MonthlySettleStatisticsVO statistics = monthlySettleService.getSettleStatistics(id); |
| | | if (statistics == null || statistics.getDetails() == null) { |
| | | return R.error("æç»æç»ä¸åå¨"); |
| | | } |
| | | |
| | | List<MonthlySettleDetail> details = statistics.getDetails(); |
| | | |
| | | // å®ä¹å¯¼åºå段 |
| | | List<String> fields = new ArrayList<>(); |
| | | fields.add("matnr"); |
| | | fields.add("maktx"); |
| | | fields.add("batch"); |
| | | fields.add("brand"); |
| | | fields.add("beginningQty"); |
| | | fields.add("endingQty"); |
| | | fields.add("diffQty"); |
| | | fields.add("inQty"); |
| | | fields.add("outQty"); |
| | | |
| | | return R.ok(exportSupport(details, fields)); |
| | | } |
| | | |
| | | } |
| | | |
| | |
| | | import com.core.annotations.AppAuth; |
| | | import com.core.common.*; |
| | | import com.core.exception.CoolException; |
| | | import com.baomidou.mybatisplus.mapper.EntityWrapper; |
| | | import com.baomidou.mybatisplus.plugins.Page; |
| | | import com.zy.asrs.entity.AgvCallbackDto; |
| | | import com.zy.asrs.entity.LocDetl; |
| | | import com.zy.asrs.entity.param.MatSyncParam; |
| | | import com.zy.asrs.entity.param.OpenLocDetlQueryParam; |
| | | import com.zy.asrs.entity.param.OpenOrderCompleteParam; |
| | | import com.zy.asrs.entity.param.OpenOrderPakinParam; |
| | | import com.zy.asrs.entity.param.OpenOrderPakoutParam; |
| | | import com.zy.asrs.service.LocDetlService; |
| | | import com.zy.asrs.service.OpenService; |
| | | import com.zy.common.model.DetlDto; |
| | | import com.zy.common.model.MesPakinParam; |
| | |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.web.bind.annotation.*; |
| | | |
| | | import javax.annotation.Resource; |
| | | import javax.servlet.http.HttpServletRequest; |
| | | import java.util.ArrayList; |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | /** |
| | | * Created by vincent on 2022/4/8 |
| | |
| | | |
| | | @Autowired |
| | | private OpenService openService; |
| | | |
| | | @Resource |
| | | private LocDetlService locDetlService; |
| | | |
| | | @PostMapping("/api/agv_callback") |
| | | @AppAuth(memo = "agvä»»å¡åè°") |
| | |
| | | return R.ok().add(openService.queryStock()); |
| | | } |
| | | |
| | | /** |
| | | * åºåæç»æ¥è¯¢ |
| | | */ |
| | | @PostMapping("/locDetl/list/default/v1") |
| | | @AppAuth(memo = "åºåæç»æ¥è¯¢") |
| | | public R queryLocDetlList(@RequestHeader(required = false) String appkey, |
| | | @RequestBody OpenLocDetlQueryParam param, |
| | | HttpServletRequest request) { |
| | | auth(appkey, param, request); |
| | | if (Cools.isEmpty(param)) { |
| | | return R.parse(BaseRes.PARAM); |
| | | } |
| | | EntityWrapper<LocDetl> wrapper = new EntityWrapper<>(); |
| | | Map<String, Object> paramMap = param.toQueryMap(); |
| | | excludeTrash(paramMap); |
| | | param.convertToWrapper(wrapper); |
| | | allLike(LocDetl.class, paramMap.keySet(), wrapper, param.getCondition()); |
| | | if (!Cools.isEmpty(param.getOrderByField())) { |
| | | wrapper.orderBy(humpToLine(param.getOrderByField()), "asc".equals(param.getOrderByType())); |
| | | } |
| | | Integer curr = param.getCurr() != null ? param.getCurr() : 1; |
| | | Integer limit = param.getLimit() != null ? param.getLimit() : 10; |
| | | return R.ok(locDetlService.selectPage(new Page<>(curr, limit), wrapper)); |
| | | } |
| | | |
| | | |
| | | private void auth(String appkey, Object obj, HttpServletRequest request) { |
| | | log.info("{}æ¥å£è¢«è®¿é®ï¼appkey:{}ï¼è¯·æ±æ°æ®ï¼{}", request.getRequestURI(), appkey, JSON.toJSONString(obj)); |
| | | request.setAttribute("cache", obj); |
| New file |
| | |
| | | package com.zy.asrs.entity.param; |
| | | |
| | | import com.baomidou.mybatisplus.mapper.EntityWrapper; |
| | | import com.core.common.Cools; |
| | | import com.core.common.DateUtils; |
| | | import com.zy.asrs.entity.LocDetl; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | import java.util.HashMap; |
| | | import java.util.Map; |
| | | |
| | | /** |
| | | * åºåæç»æ¥è¯¢åæ° |
| | | */ |
| | | @Data |
| | | public class OpenLocDetlQueryParam { |
| | | |
| | | private static final String RANGE_TIME_LINK = " - "; |
| | | |
| | | @ApiModelProperty(value = "å½å页ç ", example = "1") |
| | | private Integer curr = 1; |
| | | |
| | | @ApiModelProperty(value = "æ¯é¡µæ°é", example = "10") |
| | | private Integer limit = 10; |
| | | |
| | | @ApiModelProperty(value = "æåºå段") |
| | | private String orderByField; |
| | | |
| | | @ApiModelProperty(value = "æåºç±»å", example = "asc") |
| | | private String orderByType; |
| | | |
| | | @ApiModelProperty(value = "éç¨æ¥è¯¢æ¡ä»¶") |
| | | private String condition; |
| | | |
| | | @ApiModelProperty(value = "åºä½å·") |
| | | private String locNo; |
| | | |
| | | @ApiModelProperty(value = "æçå·") |
| | | private String zpallet; |
| | | |
| | | @ApiModelProperty(value = "ç©æç¼ç ") |
| | | private String matnr; |
| | | |
| | | @ApiModelProperty(value = "è§æ ¼") |
| | | private String specs; |
| | | |
| | | @ApiModelProperty(value = "å»ç»ç¶æ") |
| | | private String frozen; |
| | | |
| | | /** |
| | | * å°æ¥è¯¢åæ°è½¬æ¢ä¸º EntityWrapper æ¥è¯¢æ¡ä»¶ |
| | | * @param wrapper EntityWrapper 对象 |
| | | */ |
| | | public void convertToWrapper(EntityWrapper<LocDetl> wrapper) { |
| | | if (!Cools.isEmpty(locNo)) { |
| | | String val = String.valueOf(locNo); |
| | | if (val.contains(RANGE_TIME_LINK)) { |
| | | String[] dates = val.split(RANGE_TIME_LINK); |
| | | wrapper.ge("loc_no", DateUtils.convert(dates[0])); |
| | | wrapper.le("loc_no", DateUtils.convert(dates[1])); |
| | | } else { |
| | | wrapper.eq("loc_no", locNo); |
| | | } |
| | | } |
| | | if (!Cools.isEmpty(zpallet)) { |
| | | String val = String.valueOf(zpallet); |
| | | if (val.contains(RANGE_TIME_LINK)) { |
| | | String[] dates = val.split(RANGE_TIME_LINK); |
| | | wrapper.ge("zpallet", DateUtils.convert(dates[0])); |
| | | wrapper.le("zpallet", DateUtils.convert(dates[1])); |
| | | } else { |
| | | wrapper.like("zpallet", zpallet); |
| | | } |
| | | } |
| | | if (!Cools.isEmpty(matnr)) { |
| | | String val = String.valueOf(matnr); |
| | | if (val.contains(RANGE_TIME_LINK)) { |
| | | String[] dates = val.split(RANGE_TIME_LINK); |
| | | wrapper.ge("matnr", DateUtils.convert(dates[0])); |
| | | wrapper.le("matnr", DateUtils.convert(dates[1])); |
| | | } else { |
| | | wrapper.like("matnr", matnr); |
| | | } |
| | | } |
| | | if (!Cools.isEmpty(specs)) { |
| | | String val = String.valueOf(specs); |
| | | if (val.contains(RANGE_TIME_LINK)) { |
| | | String[] dates = val.split(RANGE_TIME_LINK); |
| | | wrapper.ge("specs", DateUtils.convert(dates[0])); |
| | | wrapper.le("specs", DateUtils.convert(dates[1])); |
| | | } else { |
| | | wrapper.like("specs", specs); |
| | | } |
| | | } |
| | | if (!Cools.isEmpty(frozen)) { |
| | | String val = String.valueOf(frozen); |
| | | if (val.contains(RANGE_TIME_LINK)) { |
| | | String[] dates = val.split(RANGE_TIME_LINK); |
| | | wrapper.ge("frozen", DateUtils.convert(dates[0])); |
| | | wrapper.le("frozen", DateUtils.convert(dates[1])); |
| | | } else { |
| | | wrapper.like("frozen", frozen); |
| | | } |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 转æ¢ä¸ºæ¥è¯¢æ¡ä»¶ Mapï¼ç¨äº excludeTrash å allLikeï¼ |
| | | * @return Map 对象 |
| | | */ |
| | | public Map<String, Object> toQueryMap() { |
| | | Map<String, Object> paramMap = new HashMap<>(); |
| | | if (!Cools.isEmpty(locNo)) { |
| | | paramMap.put("locNo", locNo); |
| | | } |
| | | if (!Cools.isEmpty(zpallet)) { |
| | | paramMap.put("zpallet", zpallet); |
| | | } |
| | | if (!Cools.isEmpty(matnr)) { |
| | | paramMap.put("matnr", matnr); |
| | | } |
| | | if (!Cools.isEmpty(specs)) { |
| | | paramMap.put("specs", specs); |
| | | } |
| | | if (!Cools.isEmpty(frozen)) { |
| | | paramMap.put("frozen", frozen); |
| | | } |
| | | return paramMap; |
| | | } |
| | | |
| | | } |
| | | |
| | |
| | | detail.setInQty(inQty); |
| | | detail.setOutQty(outQty); |
| | | detail.setEndingQty(endingQty); |
| | | // stock_qty åæ®µå·²åºå¼ï¼å®é
åºåçäºææ«åºåï¼ä¸ååç¬åå¨ |
| | | // detail.setStockQty(endingQty); |
| | | detail.setDiffQty(diffQty); |
| | | // æ¶é´ä¿¡æ¯ |
| | | detail.setCreateTime(new Date()); |
| New file |
| | |
| | | -- æç» |
| | | insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'monthlySettle/monthlySettle.html', N'æç»ç®¡ç', null, '2', null, '1'); |
| | | |
| | | insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'monthlySettle#btn-view', N'æ¥è¯¢', '' , '3', '0', '1'); |
| | | insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'monthlySettle#btn-add', N'åèµ·æç»', '' , '3', '1', '1'); |
| | | insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'monthlySettle#btn-export', N'导åº', '' , '3', '2', '1'); |
| | | insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'monthlySettle#btn-delete', N'å é¤', '' , '3', '3', '1'); |
| | | |
| | | -- å
¥åºåå²è®¢å |
| | | insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'orderPakinLog/order.html', N'å
¥åºåå²åæ®', null, '2', null, '1'); |
| | | |
| | | insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'orderPakinLog#btn-view', N'æ¥è¯¢', '' , '3', '0', '1'); |
| | | insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'orderPakinLog#btn-edit', N'ä¿®æ¹ä¸å¡æ¶é´', '' , '3', '1', '1'); |
| | | |
| | | -- åºåºåå²è®¢å |
| | | insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'orderPakoutLog/order.html', N'åºåºåå²åæ®', null, '2', null, '1'); |
| | | |
| | | insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'orderPakoutLog#btn-view', N'æ¥è¯¢', '' , '3', '0', '1'); |
| | | insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'orderPakoutLog#btn-edit', N'ä¿®æ¹ä¸å¡æ¶é´', '' , '3', '1', '1'); |
| | | |
| | | |
| | | |
| | | |
| | | |
| | |
| | | #btn-into { |
| | | display: none; |
| | | } |
| | | .btn-view { |
| | | display: none; |
| | | } |
| | | |
| | | /*ä¿®æ¹å¤éæ¡é¢è²*/ |
| | | /*.layui-form-checked[lay-skin=primary] i {*/ |
| | |
| | | {field: 'totalOutQty', align: 'center', title: 'æ»åºåºæ°é', width: 120}, |
| | | {field: 'totalMaterials', align: 'center', title: 'ç©æç§ç±»æ°', width: 120}, |
| | | {field: 'createTime$', title: 'å建æ¶é´', minWidth: 180, width: 180}, |
| | | {align: 'center', title: 'æä½', toolbar: '#operate', width: 180} |
| | | {align: 'center', title: 'æä½', toolbar: '#operate', width: 240} |
| | | ]], |
| | | request: { |
| | | pageName: 'curr', |
| | |
| | | var layEvent = obj.event; |
| | | if (layEvent === 'detail') { |
| | | showDetailDialog(data); |
| | | } else if (layEvent === 'export') { |
| | | exportDetail(data); |
| | | } else if (layEvent === 'delete') { |
| | | deleteSettle(data); |
| | | } |
| | |
| | | }); |
| | | } |
| | | |
| | | // å¯¼åºæç»æç» |
| | | function exportDetail(data) { |
| | | layer.confirm('ç¡®å®å¯¼åºæç»æç» "' + data.settleNo + '" åï¼', { |
| | | shade: .1, |
| | | skin: 'layui-layer-admin' |
| | | }, function (i) { |
| | | layer.close(i); |
| | | layer.load(2); |
| | | $.ajax({ |
| | | url: baseUrl + '/monthlySettle/detail/export/' + data.id + '/auth', |
| | | headers: {'token': localStorage.getItem('token')}, |
| | | method: 'POST', |
| | | success: function (res) { |
| | | layer.closeAll('loading'); |
| | | if (res.code === 200) { |
| | | // å®ä¹è¡¨å¤´ |
| | | var titles = [ |
| | | 'ç©æç¼ç ', |
| | | 'ç©æåç§°', |
| | | 'æ¹æ¬¡', |
| | | 'åç', |
| | | 'æååºå', |
| | | 'ææ«åºå', |
| | | '差弿°é', |
| | | 'æ¬æå
¥åº', |
| | | 'æ¬æåºåº' |
| | | ]; |
| | | // ä½¿ç¨ table.exportFile å¯¼åº |
| | | table.exportFile(titles, res.data, 'xls'); |
| | | layer.msg('å¯¼åºæå', {icon: 1}); |
| | | } else if (res.code === 403) { |
| | | top.location.href = baseUrl + "/"; |
| | | } else { |
| | | layer.msg(res.msg || '导åºå¤±è´¥', {icon: 2}); |
| | | } |
| | | }, |
| | | error: function() { |
| | | layer.closeAll('loading'); |
| | | layer.msg('导åºå¤±è´¥', {icon: 2}); |
| | | } |
| | | }); |
| | | }); |
| | | } |
| | | |
| | | // å 餿ç»è®°å½ |
| | | function deleteSettle(data) { |
| | | layer.confirm('确认è¦å 餿ç»è®°å½ "' + data.settleNo + '" åï¼å é¤åå°æ¸
é¤å
³èçåºå
¥åºè®¢åæç»ä¿¡æ¯ï¼å¯ä»¥éæ°è¿è¡æç»ã', { |
| | |
| | | <link rel="stylesheet" href="../../static/layui/css/layui.css" media="all"> |
| | | <link rel="stylesheet" href="../../static/css/admin.css?v=318" media="all"> |
| | | <link rel="stylesheet" href="../../static/css/cool.css" media="all"> |
| | | <style> |
| | | .btn-add { |
| | | display: none; |
| | | } |
| | | |
| | | .btn-edit { |
| | | display: none; |
| | | } |
| | | |
| | | .btn-complete { |
| | | display: none; |
| | | } |
| | | |
| | | .btn-delete { |
| | | display: none; |
| | | } |
| | | |
| | | .btn-export { |
| | | display: none; |
| | | } |
| | | |
| | | .btn-view { |
| | | display: none; |
| | | } |
| | | </style> |
| | | </head> |
| | | <body> |
| | | |
| | |
| | | </div> |
| | | </div> |
| | | <div class="layui-inline"> |
| | | <button class="layui-btn icon-btn" lay-filter="search" lay-submit> |
| | | <button class="layui-btn icon-btn btn-view" lay-filter="search" lay-submit> |
| | | <i class="layui-icon"></i>æç´¢ |
| | | </button> |
| | | <button id="startSettleBtn" class="layui-btn icon-btn layui-btn-normal"> |
| | | <button id="startSettleBtn" class="layui-btn icon-btn layui-btn-normal btn-add"> |
| | | <i class="layui-icon"></i>åèµ·æç» |
| | | </button> |
| | | <button type="button" class="layui-btn icon-btn layui-btn-primary" lay-filter="reset" lay-submit> |
| | |
| | | |
| | | <!-- è¡¨æ ¼æä½å --> |
| | | <script type="text/html" id="operate"> |
| | | <a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="detail">æ¥çæç»</a> |
| | | <a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="delete">å é¤</a> |
| | | <a class="layui-btn layui-btn-normal layui-btn-xs btn-export" lay-event="export">导åº</a> |
| | | <a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="detail">æç»</a> |
| | | <a class="layui-btn layui-btn-danger layui-btn-xs btn-delete" lay-event="delete">å é¤</a> |
| | | </script> |
| | | |
| | | <!-- åèµ·æç»å¼¹çª --> |
| | |
| | | .layui-timeline:first-child .layui-timeline-item { |
| | | margin-top: 30px; |
| | | } |
| | | |
| | | .btn-add { |
| | | display: none; |
| | | } |
| | | |
| | | .btn-edit { |
| | | display: none; |
| | | } |
| | | |
| | | .btn-complete { |
| | | display: none; |
| | | } |
| | | |
| | | .btn-delete { |
| | | display: none; |
| | | } |
| | | |
| | | .btn-view { |
| | | display: none; |
| | | } |
| | | </style> |
| | | </head> |
| | | |
| | |
| | | </div> |
| | | </div> |
| | | <div class="layui-inline"> |
| | | <button class="layui-btn icon-btn" lay-filter="tbSearch" lay-submit> |
| | | <button class="layui-btn icon-btn btn-view" lay-filter="tbSearch" lay-submit> |
| | | <i class="layui-icon"></i>æç´¢ |
| | | </button> |
| | | </div> |
| | |
| | | <!-- æä½å --> |
| | | <script type="text/html" id="operate"> |
| | | {{# if(!d.monthlySettleId || d.monthlySettleId == 0){ }} |
| | | <a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="editOrderTime">ä¿®æ¹ä¸å¡æ¶é´</a> |
| | | <a class="layui-btn layui-btn-primary layui-btn-xs btn-edit" lay-event="editOrderTime">ä¿®æ¹ä¸å¡æ¶é´</a> |
| | | {{# } }} |
| | | </script> |
| | | <script type="text/html" id="orderNoTpl"> |
| | |
| | | .layui-timeline:first-child .layui-timeline-item { |
| | | margin-top: 30px; |
| | | } |
| | | |
| | | .btn-add { |
| | | display: none; |
| | | } |
| | | |
| | | .btn-edit { |
| | | display: none; |
| | | } |
| | | |
| | | .btn-complete { |
| | | display: none; |
| | | } |
| | | |
| | | .btn-delete { |
| | | display: none; |
| | | } |
| | | |
| | | .btn-view { |
| | | display: none; |
| | | } |
| | | </style> |
| | | </head> |
| | | |
| | |
| | | </div> |
| | | </div> |
| | | <div class="layui-inline"> |
| | | <button class="layui-btn icon-btn" lay-filter="tbSearch" lay-submit> |
| | | <button class="layui-btn icon-btn btn-view" lay-filter="tbSearch" lay-submit> |
| | | <i class="layui-icon"></i>æç´¢ |
| | | </button> |
| | | </div> |
| | |
| | | <!-- æä½å --> |
| | | <script type="text/html" id="operate"> |
| | | {{# if(!d.monthlySettleId || d.monthlySettleId == 0){ }} |
| | | <a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="editOrderTime">ä¿®æ¹ä¸å¡æ¶é´</a> |
| | | <a class="layui-btn layui-btn-primary layui-btn-xs btn-edit" lay-event="editOrderTime">ä¿®æ¹ä¸å¡æ¶é´</a> |
| | | {{# } }} |
| | | </script> |
| | | <script type="text/html" id="orderNoTpl"> |